aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBossCode45 <boss@tehbox.org>2025-05-09 11:27:42 +1200
committerBossCode45 <boss@tehbox.org>2025-05-09 11:30:29 +1200
commit7072cf1bdf2b8e4183ccb0247d8c5fa266ae315f (patch)
treecde5b9785060504e680b0e1acc468849dfd6145c
parentcd74ab83ed8215dfc87e538395ee9af56a56c893 (diff)
downloadnixos-configuration-7072cf1bdf2b8e4183ccb0247d8c5fa266ae315f.tar.gz
nixos-configuration-7072cf1bdf2b8e4183ccb0247d8c5fa266ae315f.zip
Initial commit
-rw-r--r--.gitignore1
-rw-r--r--configuration.nix288
-rw-r--r--flake.nix60
-rw-r--r--hardware-configuration.nix52
-rw-r--r--home-manager/YATwm/config0
-rw-r--r--home-manager/YATwm/default.nix109
-rw-r--r--home-manager/emacs/default.nix31
-rw-r--r--home-manager/home.nix136
-rw-r--r--home-manager/hyprland/default.nix148
-rw-r--r--home-manager/hyprland/default.nix~95
-rw-r--r--home-manager/hyprland/hyprlock.conf41
-rw-r--r--home-manager/hyprpaper/default.nix10
-rw-r--r--home-manager/hyprpaper/hyprpaper.conf3
-rw-r--r--home-manager/i3/config332
-rw-r--r--home-manager/i3/default.nix41
-rw-r--r--home-manager/i3/i3-commands.nix16
-rwxr-xr-xhome-manager/i3/scripts/exit.sh20
-rwxr-xr-xhome-manager/i3/scripts/image_upload.sh7
-rwxr-xr-xhome-manager/i3/scripts/monitor-config.sh23
-rwxr-xr-xhome-manager/i3/scripts/workspaces.sh7
-rw-r--r--home-manager/i3/scripts/workspaces.txt11
-rw-r--r--home-manager/kitty/default.nix24
-rw-r--r--home-manager/kitty/palenight.conf40
-rw-r--r--home-manager/picom/default.nix18
-rw-r--r--home-manager/polybar/config.ini183
-rw-r--r--home-manager/polybar/default.nix20
-rwxr-xr-xhome-manager/polybar/launch.sh20
-rw-r--r--home-manager/rofi/config/config.rasi145
-rw-r--r--home-manager/rofi/config/customised.rasi195
-rw-r--r--home-manager/rofi/default.nix13
-rw-r--r--home-manager/shells/bash.nix80
-rw-r--r--home-manager/waybar/config/config.jsonc57
-rw-r--r--home-manager/waybar/config/style.css71
-rw-r--r--home-manager/waybar/default.nix16
-rw-r--r--wallpaper.pngbin0 -> 259730 bytes
35 files changed, 2313 insertions, 0 deletions
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..74c0e19
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1 @@
+flake.lock \ No newline at end of file
diff --git a/configuration.nix b/configuration.nix
new file mode 100644
index 0000000..244f42c
--- /dev/null
+++ b/configuration.nix
@@ -0,0 +1,288 @@
+# 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, inputs, ... }:
+
+let
+ nvidia-offload = pkgs.writeShellScriptBin "prime-run" ''
+export __NV_PRIME_RENDER_OFFLOAD=1
+export __NV_PRIME_RENDER_OFFLOAD_PROVIDER=NVIDIA-G0
+export __GLX_VENDOR_LIBRARY_NAME=nvidia
+export __VK_LAYER_NV_optimus=NVIDIA_only
+exec "$@"
+'';
+in
+{
+ imports =
+ [ # Include the results of the hardware scan.
+ ./hardware-configuration.nix
+ inputs.YATwm.nixosModules.default
+ #inputs.spicetify-nix.nixosModules.default
+ ];
+
+
+ nix.nixPath = [ "/etc/nix/path" ];
+ nix.registry.nixpkgs.flake = inputs.nixpkgs;
+ environment.etc."nix/path/nixpkgs".source = inputs.nixpkgs;
+
+
+ # Use the systemd-boot EFI boot loader.
+ boot = {
+ loader.grub.enable = true;
+ loader.grub.device = "nodev";
+ loader.grub.efiSupport = true;
+ loader.grub.enableCryptodisk = true;
+ # loader.grub.useOSProber = true;
+ loader.efi.canTouchEfiVariables = true;
+ kernel.sysctl."kernel.sysrq" = 502;
+ plymouth.enable = true;
+ };
+
+
+ networking.hostName = "nixy"; # Define your hostname.
+ # Pick only one of the below networking options.
+ # networking.wireless.enable = true; # Enables wireless support via wpa_supplicant.
+ networking.networkmanager.enable = true; # Easiest to use and most distros use this by default.
+
+ # Set your time zone.
+ time.timeZone = "NZ";
+
+ # Configure network proxy if necessary
+ # networking.proxy.default = "http://user:password@proxy:port/";
+ # networking.proxy.noProxy = "127.0.0.1,localhost,internal.domain";
+
+ # Select internationalisation properties.
+ i18n.defaultLocale = "en_US.UTF-8";
+ console = {
+ font = "Lat2-Terminus16";
+ #keyMap = "us";
+ #useXkbConfig = true; # use xkbOptions in tty.
+ };
+
+ nixpkgs.config.allowUnfree = true;
+ hardware.graphics.enable = true;
+ hardware.nvidia.modesetting.enable = true;
+ hardware.nvidia.open = true;
+ hardware.nvidia.prime = {
+ offload.enable = true;
+
+ nvidiaBusId = "PCI:1:0:0";
+ intelBusId = "PCI:5:0:0";
+ };
+ hardware.nvidia.package = config.boot.kernelPackages.nvidiaPackages.stable;
+
+ # Enable the X11 windowing system.
+ services.xserver = {
+ enable = true;
+ videoDrivers = [ "nvidia" ];
+
+ desktopManager = {
+ xterm.enable = false;
+ #default = "none";
+ };
+
+ deviceSection = ''
+ Option "DRI" "2"
+ Option "TearFree" "true"
+ '';
+
+ windowManager.i3 = {
+ enable = true;
+ package = pkgs.i3-gaps;
+ };
+
+ #windowManager.YATwm = {
+ # enable = true;
+ # package = inputs.YATwm.packages.x86_64-linux.YATwm;
+ #};
+ };
+ programs.hyprland.enable = true;
+ services.displayManager = {
+ #defaultSession = "none+i3";
+ #sddm.enable = true;
+ #sddm.theme = "catppuccin-macchiato";
+ #ly.enable = true;
+
+ };
+ services.xserver.displayManager.lightdm.enable = true;
+
+ # Configure keymap in X11
+ services.xserver.xkb.layout = "us";
+ services.xserver.xkb.options = "caps:super";
+
+
+ security.pam.services.swaylock = {};
+
+ # Enable CUPS to print documents.
+ services.printing.enable = true;
+ services.printing.drivers = [ pkgs.hplip ];
+ services.avahi = {
+ enable = true;
+ nssmdns4 = true;
+ openFirewall = true;
+ };
+
+ # Enable sound.
+ #sound.enable = true;
+ services.pipewire =
+ {
+ enable = true;
+ alsa.enable = false;
+ alsa.support32Bit = false;
+ pulse.enable = true;
+ };
+
+ services.upower.enable = true;
+
+ # Enable touchpad support (enabled default in most desktopManager).
+ security.rtkit.enable = true;
+ services.libinput = {
+ enable = true;
+ mouse = {
+ accelProfile = "flat";
+ };
+ };
+
+ # Define a user account. Don't forget to set a password with ‘passwd’.
+ users.users.boss = {
+ isNormalUser = true;
+ extraGroups = [ "wheel" "networkmanager" "input" "uinput" ];
+ };
+
+ fonts.packages = with pkgs; [
+ (nerdfonts.override { fonts = [ "Cousine" ]; })
+ ];
+
+ # List packages installed in system profile. To search, run:
+ # $ nix search wget
+ nix = {
+ settings = {
+ experimental-features = [ "nix-command" "flakes" ];
+ auto-optimise-store = true;
+
+ trusted-users = [ "boss" ];
+
+ substituters = [
+ "https://cache.nixos.org"
+ ];
+
+ trusted-public-keys = [
+ "cache.nixos.org-1:6NCHdD59X431o0gWypbMrAURkbJ16ZPMQFGspcDShjY="
+ ];
+ };
+ gc = {
+ automatic = true;
+ dates = "weekly";
+ options = "--delete-older-than +5";
+ };
+ optimise.automatic = true;
+ };
+ environment.systemPackages = with pkgs;
+ [
+ nvidia-offload
+ vim
+ firefox
+ pfetch
+ neofetch
+ pinentry-gtk2
+ git
+ ];
+ documentation.dev.enable = true;
+
+ programs.steam.enable = true;
+ hardware.graphics.enable32Bit = true;
+ nixpkgs.config.packageOverrides = pkgs: {
+ steam = pkgs.steam.override {
+ extraPkgs = pkgs: with pkgs; [
+ pango
+ # gamemode
+ harfbuzz
+ ];
+ };
+ };
+
+ # Some programs need SUID wrappers, can be configured further or are
+ # started in user sessions.
+ # programs.mtr.enable = true;
+ programs.gnupg = {
+ agent = {
+ enable = true;
+ pinentryPackage = pkgs.pinentry-gtk2;
+ };
+ # enableSSHSupport = true;
+ };
+
+ hardware.bluetooth.enable = true; # enables support for Bluetooth
+ hardware.bluetooth.powerOnBoot = true; # powers up the default Bluetooth controller on boot
+ services.blueman.enable = true;
+
+ systemd.tmpfiles.rules = [
+ "f /var/lib/systemd/linger/boss" # enables lingering
+ ];
+
+ stylix = {
+ enable = true;
+
+ base16Scheme = "${pkgs.base16-schemes}/share/themes/material-palenight.yaml";
+
+ image = ./wallpaper.png;
+ targets.grub.useImage = true;
+
+ opacity = {
+ terminal = 0.8;
+ };
+
+ polarity = "dark";
+
+ fonts = {
+ monospace = {
+ package = pkgs.nerdfonts.override { fonts = [ "Cousine" ]; };
+ name = "Cousine Nerd Font Mono";
+ };
+
+ serif = {
+ package = pkgs.dejavu_fonts;
+ name = "DejaVu Serif";
+ };
+
+ sansSerif = {
+ package = pkgs.dejavu_fonts;
+ name = "DejaVu Sans";
+ };
+
+ emoji = {
+ package = pkgs.noto-fonts-emoji;
+ name = "Noto Color Emoji";
+ };
+
+ sizes = {
+ terminal = 10;
+ applications = 10;
+ desktop = 10;
+ popups = 10;
+ };
+ };
+
+ cursor = {
+ package = pkgs.nordzy-cursor-theme;
+ name = "Nordzy-cursors";
+ size = 20;
+ };
+ };
+
+ # Copy the NixOS configuration file and link it from the resulting system
+ # (/run/current-system/configuration.nix). This is useful in case you
+ # accidentally delete configuration.nix.
+ # system.copySystemConfiguration = true;
+
+ # This value determines the NixOS release from which the default
+ # settings for stateful data, like file locations and database versions
+ # on your system were taken. It‘s perfectly fine and recommended to leave
+ # this value at the release version of the first install of this system.
+ # Before changing this value read the documentation for this option
+ # (e.g. man configuration.nix or on https://nixos.org/nixos/options.html).
+ system.stateVersion = "24.05"; # Did you read the comment?
+
+}
+
diff --git a/flake.nix b/flake.nix
new file mode 100644
index 0000000..1fcdd4b
--- /dev/null
+++ b/flake.nix
@@ -0,0 +1,60 @@
+{
+ description = "My nixos configuration";
+
+ inputs = {
+ nixpkgs.url = "github:nixos/nixpkgs/nixos-24.11";
+ home-manager = {
+ url = "github:nix-community/home-manager/release-24.11";
+ inputs.nixpkgs.follows = "nixpkgs";
+ };
+ stylix = {
+ url = "github:danth/stylix/release-24.11";
+ inputs.nixpkgs.follows = "nixpkgs";
+ };
+ spicetify-nix = {
+ url = "github:Gerg-L/spicetify-nix";
+ inputs.nixpkgs.follows = "nixpkgs";
+ };
+ YATwm = {
+ #url = "git+https://git.tehbox.org/cgit/boss/YATwm.git";
+ url = "github:BossCode45/YATwm";
+ #url = "git+file:///home/boss/Documents/Coding/WM/YATwm";
+ inputs.nixpkgs.follows = "nixpkgs";
+ };
+ nil = {
+ url = "github:oxalica/nil";
+ inputs.nixpkgs.follows = "nixpkgs";
+ };
+ polymc = {
+ url = "github:PolyMC/PolyMC";
+ inputs.nixpkgs.follows = "nixpkgs";
+ };
+ zen-browser = {
+ url = "github:MarceColl/zen-browser-flake";
+ inputs.nixpkgs.follows = "nixpkgs";
+ };
+ };
+
+ outputs = inputs@{ nixpkgs, ... }: {
+ nixosConfigurations = {
+ nixy = nixpkgs.lib.nixosSystem {
+ system = "x86_64-linux";
+ specialArgs = {inherit inputs;};
+ modules = [
+ ./configuration.nix
+
+ inputs.home-manager.nixosModules.home-manager
+ {
+ home-manager.useGlobalPkgs = true;
+ home-manager.useUserPackages = true;
+
+ home-manager.users.boss = import ./home-manager/home.nix;
+ home-manager.extraSpecialArgs = {inherit inputs;};
+ }
+
+ inputs.stylix.nixosModules.stylix
+ ];
+ };
+ };
+ };
+}
diff --git a/hardware-configuration.nix b/hardware-configuration.nix
new file mode 100644
index 0000000..a400a7d
--- /dev/null
+++ b/hardware-configuration.nix
@@ -0,0 +1,52 @@
+# 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" "usbhid" "usb_storage" "sd_mod" ];
+ boot.initrd.kernelModules = [ "dm-snapshot" "cryptd"];
+ boot.kernelModules = [ "kvm-amd" ];
+ boot.extraModulePackages = [ ];
+ boot.initrd.luks.devices.cryptroot = {
+ device = "/dev/disk/by-uuid/18e2ffad-9ffb-4c3a-a82f-dd8098171427";
+ preLVM = true;
+ };
+
+ fileSystems."/" =
+ { device = "/dev/disk/by-uuid/db909240-4006-4ca8-a03a-3e3fc60cba17";
+ fsType = "ext4";
+ };
+
+ fileSystems."/home" =
+ { device = "/dev/disk/by-uuid/9ef8fad1-08cb-4c7a-9db1-3a37097544b0";
+ fsType = "ext4";
+ };
+
+ fileSystems."/boot" =
+ { device = "/dev/disk/by-uuid/6FC0-9F1C";
+ fsType = "vfat";
+ options = [ "fmask=0022" "dmask=0022" ];
+ };
+
+ swapDevices =
+ [ { device = "/dev/disk/by-uuid/e1e972c8-3bb9-4131-a77f-fdea9f086a4d"; }
+ ];
+
+ # Enables DHCP on each ethernet and wireless interface. In case of scripted networking
+ # (the default) this is the recommended approach. When using systemd-networkd it's
+ # still possible to use this option, but it's recommended to use it in conjunction
+ # with explicit per-interface declarations with `networking.interfaces.<interface>.useDHCP`.
+ networking.useDHCP = lib.mkDefault true;
+ # networking.interfaces.enp2s0.useDHCP = lib.mkDefault true;
+ # networking.interfaces.enp5s0f3u1.useDHCP = lib.mkDefault true;
+ # networking.interfaces.wlp3s0.useDHCP = lib.mkDefault true;
+
+ nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux";
+ hardware.cpu.amd.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware;
+ hardware.enableAllFirmware = true;
+}
diff --git a/home-manager/YATwm/config b/home-manager/YATwm/config
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/home-manager/YATwm/config
diff --git a/home-manager/YATwm/default.nix b/home-manager/YATwm/default.nix
new file mode 100644
index 0000000..fa9e30f
--- /dev/null
+++ b/home-manager/YATwm/default.nix
@@ -0,0 +1,109 @@
+{
+ pkgs,
+ inputs,
+ ...
+} : {
+ imports = [
+ ../polybar
+ ../rofi
+ ../kitty
+ inputs.YATwm.homeManagerModules.default
+ ];
+ home.packages = with pkgs; [
+ i3lock
+ xss-lock
+ networkmanagerapplet
+ flameshot
+ picom
+ nitrogen
+ pamixer
+ kitty
+ alacritty
+ ];
+
+ xsession.windowManager.YATwm = {
+ enable = true;
+ package = inputs.YATwm.packages.x86_64-linux.YATwm;
+ useEmacsBinds = true;
+ quitKey = "s-g";
+ swapMods = true;
+ keybinds = let
+ left = "h";
+ right = "l";
+ up = "k";
+ down = "j";
+ in {
+ # Important
+ "s-E" = "exit";
+ "s-R" = "reload";
+
+ # Directions
+ "s-${left}" = "focChange left";
+ "s-${right}" = "focChange right";
+ "s-${up}" = "focChange up";
+ "s-${down}" = "focChange down";
+
+ # Tiling
+ "s-t" = "toggle";
+ "s-f" = "fullscreen";
+
+ # Application shortcuts
+ "s-d" = "bashSpawn rofi -i -show drun -disable-history";
+ "s-D" = "bashSpawn prime-run rofi -i -show drun -disable-history";
+ "s-g" = "bashSpawn ~/bin/rofi-passmenu";
+ "s-RET" = "spawn alacritty";
+ "s-r k" = "spawn kitty";
+ "s-c" = "spawn firefox";
+ "s-S--" = "bashSpawn emacsclient -c";
+ "s-S" = "spawn flameshot gui";
+ "s-x" = "spawn loginctl lock-session";
+ "s-X" = "bashSpawn loginctl lock-session && systemctl suspend";
+ "s-Q" = "kill";
+
+ # Workspaces
+ "s-1" = "changeWS 1";
+ "s-S-1" = "wToWS 1";
+ "s-2" = "changeWS 2";
+ "s-S-2" = "wToWS 2";
+ "s-3" = "changeWS 3";
+ "s-S-3" = "wToWS 3";
+ "s-4" = "changeWS 4";
+ "s-S-4" = "wToWS 4";
+ "s-5" = "changeWS 5";
+ "s-S-5" = "wToWS 5";
+ "s-6" = "changeWS 6";
+ "s-S-6" = "wToWS 6";
+ "s-7" = "changeWS 7";
+ "s-S-7" = "wToWS 7";
+ "s-8" = "changeWS 8";
+ "s-S-8" = "wToWS 8";
+ "s-9" = "changeWS 9";
+ "s-S-9" = "wToWS 9";
+ "s-0" = "changeWS 10";
+ "s-S-0" = "wToWS 10";
+ "s-p s" = "changeWS 11";
+ "s-S-p s" = "wToWS 11";
+ };
+ workspaces = [
+ {name = "1: A";}
+ {name = "2: B";}
+ {name = "3: C";}
+ {name = "4: D";}
+ {name = "5: E";}
+ {name = "6: F"; monitorPriorities = [2 1];}
+ {name = "7: G"; monitorPriorities = [2 1];}
+ {name = "8: H"; monitorPriorities = [2 1];}
+ {name = "9: I"; monitorPriorities = [2 1];}
+ {name = "10: J"; monitorPriorities = [2 1];}
+ {name = "S"; monitorPriorities = [1];}
+ ];
+ startup = [
+ #{command = ".config/polybar/launch.sh"; once = false;}
+ #{command = "picom --legacy-backends -fD 3"; once = false;}
+ #{command = "xss-lock --transfer-sleep-lock -- i3lock -eti ~/Documents/lockscreen.png --nofork"; bash = false;}
+ #{command = "nitrogen --restore";}
+ #{command = "nm-applet"; once = false; bash = false;}
+ ];
+ #extraConfig = "bindmode normal\n" + (builtins.readFile ./config);
+ };
+}
diff --git a/home-manager/emacs/default.nix b/home-manager/emacs/default.nix
new file mode 100644
index 0000000..746e084
--- /dev/null
+++ b/home-manager/emacs/default.nix
@@ -0,0 +1,31 @@
+{ pkgs, config, ... } :
+let
+ tex = (pkgs.texlive.combine {
+ inherit (pkgs.texlive) scheme-medium
+ dvisvgm dvipng # for preview and export as html
+ etoolbox
+ subfiles
+ wrapfig amsmath ulem hyperref capt-of;
+ });
+ myEmacs = (pkgs.emacsPackagesFor pkgs.emacs30).emacsWithPackages (epkgs: with epkgs; [
+ vterm
+ treesit-grammars.with-all-grammars
+ ]);
+in
+{
+ services.emacs = {
+ enable = true;
+ package = myEmacs;
+ };
+
+ home.packages = with pkgs; [
+ mu
+ emacsPackages.mu4e
+ isync
+ ispell
+ poppler_utils
+ tex
+ ghostscript
+ myEmacs
+ ];
+}
diff --git a/home-manager/home.nix b/home-manager/home.nix
new file mode 100644
index 0000000..8c524aa
--- /dev/null
+++ b/home-manager/home.nix
@@ -0,0 +1,136 @@
+{ pkgs, lib, inputs, ... }:
+{
+ imports = [
+ ./shells/bash.nix
+ ./emacs
+ #./hyprland
+ ./i3
+ ./YATwm
+ ./kitty
+ inputs.spicetify-nix.homeManagerModules.default
+ #inputs.stylix.homeManagerModules.stylix
+ ];
+
+ home = {
+ stateVersion = "24.05";
+ username = "boss";
+ homeDirectory = "/home/boss";
+ };
+
+ # The home.packages option allows you to install Nix packages into your
+ # environment.
+ nixpkgs.config.allowUnfree = true;
+ home.packages = with pkgs; [
+ feh
+ pass
+ #spotify
+ playerctl
+ libqalculate
+ libreoffice
+ logisim-evolution
+ thunderbird
+ xdotool
+ discord
+ # (discord.override {
+ # withOpenASAR = true;
+ # })
+ mumble
+ gimp
+ bottom
+ obs-studio
+ xfce.thunar
+ mpv
+ man-pages
+ man-pages-posix
+ # (inputs.plover-flake.packages.${system}.plover.with-plugins (ps: with ps;[
+ # plover-dict-commands
+ # plover-console-ui
+ # plover-controller
+ # ]))
+ pavucontrol
+ unzip
+ appimage-run
+ lunar-client
+ libnotify
+ xclip
+ (openttd-jgrpp.overrideAttrs (oldAttrs: rec {
+ version = "0.63.3";
+ src = fetchFromGitHub {
+ owner = "JGRennison";
+ repo = "OpenTTD-patches";
+ rev = "jgrpp-${version}";
+ hash = "sha256-853LbApHqQn+ucb7xjFDfohB0/T1h11o4voBgvgbpSI=";
+ };
+ }))
+ (python3.withPackages (ps: with ps; [
+ python-lsp-server
+ ]))
+ alacritty
+ nyxt
+ wireguard-tools
+ brightnessctl
+ inputs.nil.packages.${system}.default
+ inputs.polymc.packages.${system}.default
+ jre8
+ inputs.zen-browser.packages."${system}".default
+ ];
+
+ nix = {
+ #package = pkgs.nix;
+ settings.experimental-features = [ "nix-command" "flakes" ];
+ };
+
+ home.sessionVariables = {
+ EDITOR = "emacsclient -c";
+ MAKEFLAGS = " -j16 ";
+ MOZ_ENABLE_WAYLAND = 1;
+ };
+
+
+ programs.home-manager.enable = true;
+
+ programs.direnv = {
+ enable = true;
+ enableBashIntegration = true;
+ nix-direnv.enable = true;
+ };
+
+ services.gpg-agent.enable = true;
+
+ services.dunst = {
+ enable = true;
+ settings = {
+ global = {
+ follow = "keyboard";
+ frame_width = 0;
+ };
+ };
+ };
+
+
+ programs.firefox.enable = true;
+
+ stylix.targets.spicetify.enable = false;
+ stylix.targets.firefox.profileNames = [ "default"];
+
+ programs.spicetify =
+ let
+ spicePkgs = inputs.spicetify-nix.legacyPackages.${pkgs.system};
+ in
+ {
+ enable = true;
+ enabledExtensions = with spicePkgs.extensions; [
+ fullAppDisplay
+ powerBar
+ addToQueueTop
+ ];
+ enabledCustomApps = with spicePkgs.apps; [
+ newReleases
+ lyricsPlus
+ betterLibrary
+ ];
+ theme = spicePkgs.themes.nightlight;
+ };
+
+ xsession.windowManager.command = lib.mkForce "$@";
+}
diff --git a/home-manager/hyprland/default.nix b/home-manager/hyprland/default.nix
new file mode 100644
index 0000000..9355113
--- /dev/null
+++ b/home-manager/hyprland/default.nix
@@ -0,0 +1,148 @@
+{
+ pkgs,
+ lib,
+ inputs,
+ ...
+}:
+{
+ imports = [
+ ../rofi
+ ../kitty
+ ../waybar
+ ../hyprpaper
+ ];
+
+ home.file.".config/hypr/hyprlock.conf".source = ./hyprlock.conf;
+
+ wayland.windowManager.hyprland= {
+ enable = true;
+ xwayland.enable = true;
+ systemd.variables = ["--all"];
+ settings = {
+ "$mod" = "SUPER";
+ exec-once = [
+ "waybar"
+ "xss-lock --transfer-sleep-lock -- hyprlock"
+ "nm-applet"
+ "hyprpaper"
+ ];
+ bind =
+ [
+ "$mod, C, exec, firefox"
+ ", Print, exec, grimblast copy area"
+ "$mod, D, exec, rofi -i -show drun -disable-history"
+ "$mod Shift, E, exit"
+ "$mod, Return, exec, kitty"
+ "$mod, T, togglesplit"
+ "$mod Control, left, workspace, m-1"
+ "$mod Control, h, workspace, m-1"
+ "$mod Control, right, workspace, m+1"
+ "$mod Control, l, workspace, m+1"
+ "$mod, x, exec, hyprlock"
+ "$mod Shift, x, exec, hyprlock"
+ "$mod Shift, x, exec, systemctl suspend"
+ "$mod Shift, MINUS, exec, emacsclient -c"
+ "ALT, Tab, focusmonitor, +1"
+ "$mod, G, exec, bash /home/boss/bin/rofi-passmenu"
+ ", XF86AudioRaiseVolume, exec, pamixer -i 5"
+ ", XF86AudioLowerVolume, exec, pamixer -d 5"
+ "$mod Shift, Q, killactive"
+ "$mod, F, fullscreen"
+ "$mod Shift, space, togglefloating"
+ "$mod, mouse:272, movewindow"
+ ", XF86AudioPlay, exec, playerctl play-pause"
+ "$mod, bracketleft, exec, playerctl -p firefox play-pause"
+ "$mod, bracketright, exec, playerctl -p spotify play-pause"
+ "$mod Shift, S, exec spectacle -r"
+ ]
+ ++ (
+ # workspaces
+ # binds $mod + [shift +] {1..10} to [move to] workspace {1..10}
+ builtins.concatLists (builtins.genList (
+ x: let
+ key = let
+ c = (x + 1) / 10;
+ in toString (x + 1 - (c * 10));
+ in [
+ "$mod, ${key}, workspace, ${toString (x + 1)}"
+ "$mod SHIFT, ${key}, movetoworkspace, ${toString (x + 1)}"
+ (lib.mkIf (x < 5)
+ "$mod Control, ${key}, workspace, ${toString (x + 6)}"
+ )
+ "$mod Control, ${key}, workspace, ${toString (x + 1)}"
+ ]
+ )
+ 10)
+ )
+ ++ (
+ builtins.map (
+ x: "$mod, ${ builtins.elemAt x 0}, movefocus, ${builtins.elemAt x 1}\nbind=$mod Shift, ${builtins.elemAt x 0}, movewindow, ${builtins.elemAt x 1}"
+ )
+ [
+ ["h" "l"]
+ ["left" "l"]
+ ["j" "d"]
+ ["down" "d"]
+ ["k" "u"]
+ ["up" "u"]
+ ["l" "r"]
+ ["right" "r"]
+ ]
+ );
+ monitor =
+ [
+ "eDP-1, highrr, 0x0, 1"
+ "HDMI-A-1, highrr, 1920x0, 1"
+ ];
+ workspace =
+ (builtins.genList
+ (x : "${toString (x + 1)},monitor:eDP-1")
+ 5
+ )
+ ++ (builtins.genList
+ (x : "${toString (x + 6)},monitor:HDMI-A-1")
+ 5
+ );
+
+
+ input = {
+ touchpad.natural_scroll = true;
+ #touchpad.scroll_factor = 0.5;
+ accel_profile = "flat";
+ follow_mouse = true;
+ #sensitivity = 0.00;
+ };
+ decoration = {
+ rounding = 10;
+ drop_shadow = false;
+ };
+ animation = [
+ "workspaces,1,5,easeOutQuint,slide"
+ ];
+ bezier = [
+ "easeInOutCubic,0.65,0,0.35,1"
+ "easeOutQuint,0.22,1,0.36,1"
+ ];
+ general = {
+ "col.inactive_border" = "rgb(2f2e43)";
+ "col.active_border" = "rgb(ab47bc)";
+ border_size = 2;
+ gaps_in = 6;
+ gaps_out = 12;
+ };
+ windowrulev2 = [
+ "opacity 0.8 override 0.8 override, title:Spotify$"
+ ];
+ };
+ };
+
+ home.packages = with pkgs; [
+ ydotool
+ xss-lock
+ pamixer
+ grimblast
+ playerctl
+ libsForQt5.spectacle
+ inputs.hyprlock.packages.${system}.hyprlock
+ ];
+}
diff --git a/home-manager/hyprland/default.nix~ b/home-manager/hyprland/default.nix~
new file mode 100644
index 0000000..569d7ff
--- /dev/null
+++ b/home-manager/hyprland/default.nix~
@@ -0,0 +1,95 @@
+{
+ pkgs,
+ ...
+}:
+{
+ imports = [
+ ../rofi
+ ../kitty
+ ../waybar
+ ];
+
+ wayland.windowManager.hyprland= {
+ enable = true;
+ xwayland.enable = true;
+ settings = {
+ "$mod" = "SUPER";
+ exec-once = [
+ "waybar"
+ "xss-lock --transfer-sleep-lock -- swaylock"
+ ];
+ bind =
+ [
+ "$mod, C, exec, firefox"
+ #", Print, exec, grimblast copy area"
+ "$mod, D, exec, rofi -i -show drun -disable-history"
+ "$mod Shift, E, exit"
+ "$mod, Return, exec, kitty"
+ "$mod, T, togglesplit"
+ "$mod Control, left, workspace, m-1"
+ "$mod Control, h, workspace, m-1"
+ "$mod Control, right, workspace, m+1"
+ "$mod Control, l, workspace, m+1"
+ "$mod, x, exec, swaylock"
+ "$mod Shift, x, exec, swaylock"
+ "$mod Shift, x, exec, systemctl suspend"
+ "$mod Shift, MINUS, exec, emacsclient -c"
+ ]
+ ++ (
+ # workspaces
+ # binds $mod + [shift +] {1..10} to [move to] workspace {1..10}
+ builtins.concatLists (builtins.genList (
+ x: let
+ ws = let
+ c = (x + 1) / 10;
+ in
+ builtins.toString (x + 1 - (c * 10));
+ in [
+ "$mod, ${ws}, workspace, ${toString (x + 1)}"
+ "$mod SHIFT, ${ws}, movetoworkspace, ${toString (x + 1)}"
+ ]
+ )
+ 10)
+ )
+ ++ (
+ builtins.map (
+ x: "$mod, ${ builtins.elemAt x 0}, movefocus, ${builtins.elemAt x 1}\nbind=$mod Shift, ${builtins.elemAt x 0}, movewindow, ${builtins.elemAt x 1}"
+ )
+ [
+ ["h" "l"]
+ ["left" "l"]
+ ["j" "d"]
+ ["down" "d"]
+ ["k" "u"]
+ ["up" "u"]
+ ["l" "r"]
+ ["right" "r"]
+ ]
+ );
+ monitor =
+ [
+ "eDP-1, 1920x1080, 0x0, 1"
+ "HDMI-A-1, 1920x1080, 1920x0, 1"
+ ];
+ input = {
+ touchpad.natural_scroll = true;
+ #touchpad.scroll_factor = 0.5;
+ accel_profile = "flat";
+ follow_mouse = true;
+ #sensitivity = 0.00;
+ };
+ decoration.rounding = 10;
+ animation = [
+ "workspaces,1,5,easeOutQuint,slide"
+ ];
+ bezier = [
+ "easeInOutCubic,0.65,0,0.35,1"
+ "easeOutQuint,0.22,1,0.36,1"
+ ];
+ };
+ };
+
+ home.packages = with pkgs; [
+ swaylock
+ ];
+}
diff --git a/home-manager/hyprland/hyprlock.conf b/home-manager/hyprland/hyprlock.conf
new file mode 100644
index 0000000..dc2bc93
--- /dev/null
+++ b/home-manager/hyprland/hyprlock.conf
@@ -0,0 +1,41 @@
+background {
+ path = /home/boss/Wallpapers/lockscreen.png
+ blur_passes = 0
+}
+input-field {
+ size = 200, 50
+ outline_thickness = 3
+ dots_size = 0.33 # Scale of input-field height, 0.2 - 0.8
+ dots_spacing = 0.15 # Scale of dots' absolute size, 0.0 - 1.0
+ dots_center = false
+ dots_rounding = -1 # -1 default circle, -2 follow input-field rounding
+ outer_color = rgb(151515)
+ inner_color = rgb(200, 200, 200)
+ font_color = rgb(10, 10, 10)
+ fade_on_empty = true
+ fade_timeout = 1000 # Milliseconds before fade_on_empty is triggered.
+ placeholder_text = <i>Input Password...</i> # Text rendered in the input box when it's empty.
+ hide_input = false
+ rounding = -1 # -1 means complete rounding (circle/oval)
+ check_color = rgb(204, 136, 34)
+ fail_color = rgb(204, 34, 34) # if authentication failed, changes outer_color and fail message color
+ fail_text = <i>$FAIL <b>($ATTEMPTS)</b></i> # can be set to empty
+ fail_transition = 300 # transition time in ms between normal outer_color and fail_color
+ capslock_color = -1
+ numlock_color = -1
+ bothlock_color = -1 # when both locks are active. -1 means don't change outer color (same for above)
+ invert_numlock = false # change color if numlock is off
+ swap_font_color = false # see below
+
+ position = 0, -20
+ halign = center
+ valign = center
+}
+label {
+ text = $TIME
+ text_align = center
+ color = rgb(50, 50, 50)
+ position = 0, 200
+ halign = center
+ valign = center
+} \ No newline at end of file
diff --git a/home-manager/hyprpaper/default.nix b/home-manager/hyprpaper/default.nix
new file mode 100644
index 0000000..8eed248
--- /dev/null
+++ b/home-manager/hyprpaper/default.nix
@@ -0,0 +1,10 @@
+{
+ pkgs,
+ ...
+}:
+{
+ home.file.".config/hypr/hyprpaper.conf".source = ./hyprpaper.conf;
+ home.packages = with pkgs; [
+ hyprpaper
+ ];
+}
diff --git a/home-manager/hyprpaper/hyprpaper.conf b/home-manager/hyprpaper/hyprpaper.conf
new file mode 100644
index 0000000..02bec8b
--- /dev/null
+++ b/home-manager/hyprpaper/hyprpaper.conf
@@ -0,0 +1,3 @@
+preload = ~/Wallpapers/val.png
+
+wallpaper = ,~/Wallpapers/val.png \ No newline at end of file
diff --git a/home-manager/i3/config b/home-manager/i3/config
new file mode 100644
index 0000000..dafa928
--- /dev/null
+++ b/home-manager/i3/config
@@ -0,0 +1,332 @@
+# i3 config file (v4)
+#
+# Please see https://i3wm.org/docs/userguide.html for a complete reference!
+#
+# This config file uses keycodes (bindsym) and was written for the QWERTY
+# layout.
+#
+# To get a config file with the same key positions, but for your current
+# layout, use the i3-config-wizard
+#
+
+# Font for window titles. Will also be used by the bar unless a different font
+# is used in the bar {} block below.
+font pango:Ubuntu 10
+
+# This font is widely installed, provides lots of unicode glyphs, right-to-left
+# text rendering and scalability on retina/hidpi displays (thanks to pango).
+#font pango:DejaVu Sans Mono 8
+
+# The combination of xss-lock, nm-applet and pactl is a popular choice, so
+# they are included here as an example. Modify as you see fit.
+
+# xss-lock grabs a logind suspend inhibit lock and will use i3lock to lock the
+# screen before suspend. Use loginctl lock-session to lock your screen.
+exec --no-startup-id xss-lock --transfer-sleep-lock -- i3lock -eti ~/Documents/lockscreen.png --nofork
+
+# NetworkManager is the most popular way to manage wireless networks on Linux,
+# and nm-applet is a desktop environment-independent system tray GUI for it.
+exec_always --no-startup-id nm-applet
+
+# Use pactl to adjust volume in PulseAudio.
+#set $refresh_i3status killall -SIGUSR1 i3status
+#bindsym XF86AudioRaiseVolume exec --no-startup-id pactl set-sink-volume @DEFAULT_SINK@ +5%
+#bindsym XF86AudioLowerVolume exec --no-startup-id pactl set-sink-volume @DEFAULT_SINK@ -5%
+#bindsym XF86AudioMute exec --no-startup-id pactl set-sink-mute @DEFAULT_SINK@ toggle
+#bindsym XF86AudioMicMute exec --no-startup-id pactl set-source-mute @DEFAULT_SOURCE@ toggle
+
+bindsym XF86AudioRaiseVolume exec --no-startup-id pamixer -i 5
+bindsym XF86AudioLowerVolume exec --no-startup-id pamixer -d 5
+
+# use these keys for focus, movement, and resize directions when reaching for
+# the arrows is not convenient
+
+set $up k
+set $down j
+set $left h
+set $right l
+
+##STARTUP
+#exec_always --no-startup-id "feh --bg-scale ~/Wallpapers/val.png"
+#exec_always --no-startup-id nitrogen --restore
+#exec_always --no-startup-id "picom --backend glx -fD 3 --vsync"
+exec_always --no-startup-id "~/.config/polybar/launch.sh"
+# Bind caps to super
+#exec_always --no-startup-id "setxkbmap -option caps:super"
+# Bind caps to control
+# exec --no-startup-id "setxkbmap -option ctrl:nocaps"
+# exec --no-startup-id "systemctl --user start dunst"
+exec_always --no-startup-id xinput set-prop "ELAN1203:00 04F3:307A Touchpad" "libinput Tapping Enabled" 1
+exec_always --no-startup-id xinput set-prop "ELAN1203:00 04F3:307A Touchpad" "libinput Natural Scrolling Enabled" 1
+exec --no-startup-id flameshot
+exec --no-startup-id rog-control-center
+# Using systemd instead
+#exec --no-startup-id "emacs --daemon"
+exec --no-startup-id "emacsclient -c --eval '(start-scratch)'"
+for_window [title="scratch-emacs"] , move scratchpad
+
+set $mod Mod4
+
+
+#GAPS
+
+for_window[class="-*"] border pixel 0
+
+gaps inner 6
+
+
+#My keybinds
+bindsym $mod+Control+$right workspace next
+bindsym $mod+Control+Right workspace next
+
+#Special workspaces
+bindsym $mod+p exec --no-startup-id "workspaces.sh"
+bindsym $mod+Shift+p exec --no-startup-id "workspaces.sh move"
+
+bindsym $mod+Control+$left workspace prev
+bindsym $mod+Control+Left workspace prev
+
+set $i3lock-cmd i3lock -eti ~/Documents/lockscreen.png
+
+bindsym $mod+Shift+s exec --no-startup-id flameshot gui
+
+bindsym $mod+x exec --no-startup-id "loginctl lock-session"
+bindsym $mod+Shift+x exec --no-startup-id "loginctl lock-session; systemctl suspend"
+# bindsym $mod+Shift+c exec --no-startup-id "~/.i3_commands/open-qb.sh"
+bindsym $mod+c exec --no-startup-id "firefox"
+bindsym $mod+Shift+minus exec --no-startup-id "emacsclient -c"
+
+bindsym XF86MonBrightnessUp exec --no-startup-id brightnessctl s +5
+bindsym XF86MonBrightnessDown exec --no-startup-id brightnessctl s 5-
+
+bindsym XF86AudioPlay exec --no-startup-id playerctl play-pause
+bindsym XF86AudioNext exec --no-startup-id playerctl next
+bindsym XF86AudioPrev exec --no-startup-id playerctl previous
+bindxym XF86AudioStop exec --no-startup-id playerctl stop
+
+bindsym $mod+bracketleft exec --no-startup-id playerctl -p firefox play-pause
+bindsym $mod+bracketright exec --no-startup-id playerctl -p spotify play-pause
+
+#Emoji picker
+#bindsym $mod+comma exec --no-startup-id "emojis.sh"
+
+#Monitor config
+bindsym $mod+m exec --no-startup-id "monitor-config.sh"
+
+# use Mouse+$mod to drag floating windows to their wanted position
+floating_modifier $mod
+
+# start a terminal
+bindsym $mod+Return exec --no-startup-id kitty
+
+# Start emacs with vterm
+bindsym $mod+Shift+Return exec --no-startup-id "emacsclient -c --eval '(start-terminal)'"
+
+# kill focused window
+bindsym $mod+Shift+q kill
+
+# start dmenu (a program launcher)
+bindsym $mod+d exec --no-startup-id rofi -i -show drun -disable-history
+bindsym $mod+Shift+d exec --no-startup-id "prime-run rofi -i -show drun -disable-history"
+#bindsym $mod+Shift+c exec --no-startup-id "rofi -i -lines 0 -dmenu -p 'Search:' | xargs -I{} ~/.i3_commands/browser-open.sh '{}'"
+#bindsym $mod+d exec dmenu_run -i -nb '#303239' -nf '#f3f4f5' -sb '#bf00f6' -sf '#f3f4f5'
+
+# Password menu
+bindsym $mod+g exec --no-startup-id "~/bin/rofi-passmenu"
+
+# i3 command runner
+bindsym $mod+Shift+semicolon exec --no-startup-id "i3-msg $(echo | rofi -l 0 -dmenu -p 'i3 command')"
+
+# There also is the (new) i3-dmenu-desktop which only displays applications
+# shipping a .desktop file. It is a wrapper around dmenu, so you need that
+# installed.
+# bindsym $mod+d exec --no-startup-id i3-dmenu-desktop
+
+# change focus
+bindsym $mod+$left focus left
+bindsym $mod+$down focus down
+bindsym $mod+$up focus up
+bindsym $mod+$right focus right
+
+bindsym Mod1+Tab focus output left
+
+# alternatively, you can use the cursor keys:
+bindsym $mod+Left focus left
+bindsym $mod+Down focus down
+bindsym $mod+Up focus up
+bindsym $mod+Right focus right
+
+# move focused window
+bindsym $mod+Shift+$left move left
+bindsym $mod+Shift+$down move down
+bindsym $mod+Shift+$up move up
+bindsym $mod+Shift+$right move right
+
+# alternatively, you can use the cursor keys:
+bindsym $mod+Shift+Left move left
+bindsym $mod+Shift+Down move down
+bindsym $mod+Shift+Up move up
+bindsym $mod+Shift+Right move right
+
+# split in horizontal orientation
+# bindsym $mod+g split h
+
+# split in vertical orientation
+# bindsym $mod+v split v
+
+# split toggle
+bindsym $mod+t split toggle
+
+# enter fullscreen mode for the focused container
+bindsym $mod+f fullscreen toggle
+
+# change container layout (stacked, tabbed, toggle split)
+bindsym $mod+s layout stacking
+bindsym $mod+w layout tabbed
+bindsym $mod+e layout toggle split
+
+# toggle tiling / floating
+bindsym $mod+Shift+space floating toggle
+
+# change focus between tiling / floating windows
+bindsym $mod+space focus mode_toggle
+
+# focus the parent container
+bindsym $mod+a focus parent
+
+# focus the child container
+#bindsym $mod+d focus child
+
+# move the currently focused window to the scratchpad
+# bindsym $mod+Shift+minus move scratchpad
+
+# Show the next scratchpad window or hide the focused scratchpad window.
+# If there are multiple scratchpad windows, this command cycles through them.
+for_window [title="scratch-emacs"] , floating_minimum_size 1600 x 900
+bindsym $mod+minus scratchpad show
+
+# Define names for default workspaces for which we configure key bindings later on.
+# We use variables to avoid repeating the names in multiple places.
+set $ws1 "1: "
+set $ws2 "2: 󰑴"
+set $ws3 "3: "
+set $ws4 "4: "
+set $ws5 "5: "
+set $ws6 "6: "
+set $ws7 "7: 󰑴"
+set $ws8 "8: "
+set $ws9 "9: "
+set $ws10 "10: "
+
+# make workspaces go on correct monitors
+workspace $ws1 output eDP eDP-1 eDP-1-1
+workspace $ws2 output eDP eDP-1 eDP-1-1
+workspace $ws3 output eDP eDP-1 eDP-1-1
+workspace $ws4 output eDP eDP-1 eDP-1-1
+workspace $ws5 output eDP eDP-1 eDP-1-1
+workspace $ws6 output HDMI-A-0 HDMI-1 HDMI-1-1 eDP eDP-1 eDP-1-1
+workspace $ws7 output HDMI-A-0 HDMI-1 HDMI-1-1 eDP eDP-1 eDP-1-1
+workspace $ws8 output HDMI-A-0 HDMI-1 HDMI-1-1 eDP eDP-1 eDP-1-1
+workspace $ws9 output HDMI-A-0 HDMI-1 HDMI-1-1 eDP eDP-1 eDP-1-1
+workspace $ws10 output HDMI-A-0 HDMI-1 HDMI-1-1 eDP eDP-1 eDP-1-1
+
+# switch to workspace
+bindsym $mod+1 workspace number $ws1
+bindsym $mod+2 workspace number $ws2
+bindsym $mod+3 workspace number $ws3
+bindsym $mod+4 workspace number $ws4
+bindsym $mod+5 workspace number $ws5
+bindsym $mod+6 workspace number $ws6
+bindsym $mod+7 workspace number $ws7
+bindsym $mod+8 workspace number $ws8
+bindsym $mod+9 workspace number $ws9
+bindsym $mod+0 workspace number $ws10
+
+
+bindsym $mod+Control+1 workspace number $ws6; workspace number $ws1
+bindsym $mod+Control+2 workspace number $ws7; workspace number $ws2
+bindsym $mod+Control+3 workspace number $ws8; workspace number $ws3
+bindsym $mod+Control+4 workspace number $ws9; workspace number $ws4
+bindsym $mod+Control+5 workspace number $ws10; workspace number $ws5
+
+# move focused container to workspace
+bindsym $mod+Shift+1 move container to workspace number $ws1
+bindsym $mod+Shift+2 move container to workspace number $ws2
+bindsym $mod+Shift+3 move container to workspace number $ws3
+bindsym $mod+Shift+4 move container to workspace number $ws4
+bindsym $mod+Shift+5 move container to workspace number $ws5
+bindsym $mod+Shift+6 move container to workspace number $ws6
+bindsym $mod+Shift+7 move container to workspace number $ws7
+bindsym $mod+Shift+8 move container to workspace number $ws8
+bindsym $mod+Shift+9 move container to workspace number $ws9
+bindsym $mod+Shift+0 move container to workspace number $ws10
+
+# reload the configuration file
+# bindsym $mod+Shift+c reload
+# restart i3 inplace (preserves your layout/session, can be used to upgrade i3)
+bindsym $mod+Shift+r restart
+# exit i3 (logs you out of your X session)
+bindsym $mod+Shift+e exec "exit.sh"
+#bindsym $mod+Shift+e exec "i3-nagbar -t warning -m 'You pressed the exit shortcut. Do you really want to exit i3? This will end your X session.' -B 'Yes, exit i3' 'i3-msg exit'"
+
+# resize window (you can also use the mouse for that)
+mode "resize" {
+ # These bindings trigger as soon as you enter the resize mode
+
+ # Pressing left will shrink the window’s width.
+ # Pressing right will grow the window’s width.
+ # Pressing up will shrink the window’s height.
+ # Pressing down will grow the window’s height.
+ bindsym $left resize shrink width 10 px or 10 ppt
+ bindsym $down resize grow height 10 px or 10 ppt
+ bindsym $up resize shrink height 10 px or 10 ppt
+ bindsym $right resize grow width 10 px or 10 ppt
+
+ # same bindings, but for the arrow keys
+ bindsym Left resize shrink width 10 px or 10 ppt
+ bindsym Down resize grow height 10 px or 10 ppt
+ bindsym Up resize shrink height 10 px or 10 ppt
+ bindsym Right resize grow width 10 px or 10 ppt
+
+ # back to normal: Enter or Escape or $mod+r
+ bindsym Return mode "default"
+ bindsym Escape mode "default"
+ bindsym $mod+r mode "default"
+}
+
+bindsym $mod+r mode "resize"
+
+set $bg-color #303239
+set $inactive-bg-color #303239
+set $text-color #f3f4f5
+set $inactive-text-color #676E7D
+set $urgent-bg-color #bf00f6
+
+set $focused-border #ffcb6b
+
+# window colors
+# border background text indicator
+client.focused $bg-color $focused-border $text-color $bg-color
+client.unfocused $inactive-bg-color $inactive-bg-color $inactive-text-color $inactive-bg-color
+client.focused_inactive $inactive-bg-color $inactive-bg-color $inactive-text-color $inactive-bg-color
+client.urgent $urgent-bg-color $urgent-bg-color $text-color $urgent-bg-color
+
+
+hide_edge_borders none
+
+# bar
+bar {
+ i3bar_command none
+ tray_output primary
+ font pango: Sauce Code Pro Nerd Font, Powerline 10
+ height 19
+ #status_command i3status
+ status_command "i3status-rs"
+ colors {
+ background $bg-color
+ # border background text
+ focused_workspace $bg-color $bg-color $text-color
+ inactive_workspace $inactive-bg-color $inactive-bg-color $inactive-text-color
+ urgent_workspace $urgent-bg-color $urgent-bg-color $text-color
+ }
+}
diff --git a/home-manager/i3/default.nix b/home-manager/i3/default.nix
new file mode 100644
index 0000000..087415c
--- /dev/null
+++ b/home-manager/i3/default.nix
@@ -0,0 +1,41 @@
+# let
+# nixpkgs = fetchTarball "https://github.com/NixOS/nixpkgs/tarball/nixos-24.11";
+# pkgs = import nixpkgs { config = {}; overlays = []; };
+# in
+# {
+# i3-commands = pkgs.callPackage ./i3-commands.nix { };
+# }
+
+
+{
+ config,
+ pkgs,
+ ...
+} : {
+ imports = [
+ ../polybar
+ ../rofi
+ ../kitty
+ ../picom
+ ];
+ xsession.enable = true;
+ xsession.windowManager.i3 = {
+ enable = true;
+ package = pkgs.i3-gaps;
+ };
+ xdg.configFile."i3/config".enable = false;
+ home.file.".config/i3/config" = {
+ source = ./config;
+ onChange = "${pkgs.i3-gaps}/bin/i3-msg restart";
+ };
+ home.packages = with pkgs; [
+ i3lock
+ xss-lock
+ networkmanagerapplet
+ flameshot
+ picom
+ nitrogen
+ pamixer
+ (pkgs.callPackage ./i3-commands.nix { })
+ ];
+}
diff --git a/home-manager/i3/i3-commands.nix b/home-manager/i3/i3-commands.nix
new file mode 100644
index 0000000..9b8705d
--- /dev/null
+++ b/home-manager/i3/i3-commands.nix
@@ -0,0 +1,16 @@
+{
+ stdenv
+}:
+stdenv.mkDerivation {
+ pname = "i3-commands";
+ version = "0.0.1";
+
+ srcs = builtins.path { name = "scripts"; path = ./scripts/.; };
+
+ installPhase = ''
+runHook preInstall
+mkdir -p $out/bin
+install -D -m 755 ./* $out/bin
+runHook postInstall
+'';
+}
diff --git a/home-manager/i3/scripts/exit.sh b/home-manager/i3/scripts/exit.sh
new file mode 100755
index 0000000..6e1f492
--- /dev/null
+++ b/home-manager/i3/scripts/exit.sh
@@ -0,0 +1,20 @@
+#!/usr/bin/env bash
+choice=$(echo -e "Sleep\nLock\nLock and sleep\nExit i3" | rofi -dmenu -i -p "What do you want to do")
+case $choice in
+ "Sleep")
+ systemctl suspend
+ ;;
+ "Lock")
+ i3lock -eti /usr/share/backgrounds/lockscreen.png
+ ;;
+ "Lock and sleep")
+ i3lock -eti /usr/share/backgrounds/lockscreen.png
+ systemctl suspend
+ ;;
+ "Exit i3")
+ i3-msg exit
+ ;;
+ *)
+ notify-send "Canceling"
+ ;;
+esac
diff --git a/home-manager/i3/scripts/image_upload.sh b/home-manager/i3/scripts/image_upload.sh
new file mode 100755
index 0000000..896f23f
--- /dev/null
+++ b/home-manager/i3/scripts/image_upload.sh
@@ -0,0 +1,7 @@
+#!/usr/bin/env bash
+image_name=$(rofi -dmenu -l 0 -p "Image name")
+xclip -selection clipboard -t image/png -o > ~/Documents/tehbox-files/$image_name
+eval $(ssh-agent)
+rsync ~/Documents/tehbox-files/$image_name files@tehbox.org:/srv/files
+notify-send "uploaded https://files.tehbox.org/$image_name"
+echo -n "https://files.tehbox.org/$image_name" | xclip -i -selection clipboard
diff --git a/home-manager/i3/scripts/monitor-config.sh b/home-manager/i3/scripts/monitor-config.sh
new file mode 100755
index 0000000..8f17660
--- /dev/null
+++ b/home-manager/i3/scripts/monitor-config.sh
@@ -0,0 +1,23 @@
+#!/bin/sh
+
+choice=$(echo -e "One monitor\nTwo monitors" | rofi -dmenu -i -p "What monitor setup to use")
+
+monitor1=$(xrandr | grep -E "eDP(-1(-1)?)?" | awk '{print $1 }')
+monitor2=$(xrandr | grep -E "HDMI(-A-0)?(-1(-1)?)?" | awk '{print $1 }')
+
+case $choice in
+ "One monitor")
+ xrandr --output $monitor1 --primary --mode 1920x1080 --rate 144 --pos 0x0 --rotate normal --output $monitor2 --off
+ sleep 1
+ i3-msg restart
+ ;;
+ "Two monitors")
+ xrandr --output $monitor1 --primary --mode 1920x1080 --rate 144 --pos 0x0 --rotate normal --output $monitor2 --mode 1920x1080 --rate 144 --pos 1920x0 --rotate normal
+ sleep 1
+ i3-msg restart
+ ;;
+ *)
+ notify-send "Invalid response, canceling"
+ ;;
+esac
+
diff --git a/home-manager/i3/scripts/workspaces.sh b/home-manager/i3/scripts/workspaces.sh
new file mode 100755
index 0000000..3ad68ef
--- /dev/null
+++ b/home-manager/i3/scripts/workspaces.sh
@@ -0,0 +1,7 @@
+choice=$(cat ~/.i3_commands/workspaces.txt | rofi -dmenu -i -p "Which workspace to switch to")
+if [[ $1 == "move" ]]
+then
+ i3-msg move container to workspace \"$choice\"
+else
+ i3-msg workspace \"$choice\"
+fi
diff --git a/home-manager/i3/scripts/workspaces.txt b/home-manager/i3/scripts/workspaces.txt
new file mode 100644
index 0000000..84b3bf0
--- /dev/null
+++ b/home-manager/i3/scripts/workspaces.txt
@@ -0,0 +1,11 @@
+1: 
+2: 󰑴
+3: 
+4: 
+5: 
+6: 
+7: 󰑴
+8: 
+9: 
+10: 
+S: 
diff --git a/home-manager/kitty/default.nix b/home-manager/kitty/default.nix
new file mode 100644
index 0000000..7d7326b
--- /dev/null
+++ b/home-manager/kitty/default.nix
@@ -0,0 +1,24 @@
+{
+ pkgs,
+ config,
+ ...
+}:
+{
+ programs.kitty = {
+ enable = true;
+ keybindings = {
+ "control+shift+c" = "copy_to_clipboard";
+ "control+shift+v" = "paste_from_clipboard";
+ };
+ settings = {
+ #font_family = "Cousine Nerd Font";
+ #font_size = "10.0";
+ #background_opacity = "0.8";
+ term = "xterm-256color";
+ enable_audio_bell = "no";
+ mouse_hide_wait = 2;
+ window_padding_width = 4;
+ };
+ #extraConfig = (builtins.readFile ./palenight.conf);
+ };
+}
diff --git a/home-manager/kitty/palenight.conf b/home-manager/kitty/palenight.conf
new file mode 100644
index 0000000..6a58ece
--- /dev/null
+++ b/home-manager/kitty/palenight.conf
@@ -0,0 +1,40 @@
+# Palenight Colorscheme for Kitty
+# Based on https://github.com/sindresorhus/hyper-snazzy
+
+foreground #959dcb
+background #292d3e
+selection_foreground #eceef0
+selection_background #607c8b
+url_color #82aaff
+
+# black
+color0 #434759
+color8 #434758
+
+# red
+color1 #f07178
+color9 #ff8b92
+
+# green
+color2 #c3e88d
+color10 #ddffa7
+
+# yellow
+color3 #ffcb6b
+color11 #ffe585
+
+# blue
+color4 #82aaff
+color12 #9cc4ff
+
+# magenta
+color5 #c792ea
+color13 #e1acff
+
+# cyan
+color6 #89ddff
+color14 #a3f7ff
+
+# white
+color7 #d0d0d0
+color15 #fefefe
diff --git a/home-manager/picom/default.nix b/home-manager/picom/default.nix
new file mode 100644
index 0000000..1c13407
--- /dev/null
+++ b/home-manager/picom/default.nix
@@ -0,0 +1,18 @@
+{
+ pkgs,
+ config,
+ ...
+}:
+{
+ services.picom = {
+ enable = true;
+ fade = true;
+ fadeDelta = 3;
+ fadeExclude = [
+ "window_type *= 'tooltip'"
+ ];
+ settings = {
+ corner-radius = 10;
+ };
+ };
+}
diff --git a/home-manager/polybar/config.ini b/home-manager/polybar/config.ini
new file mode 100644
index 0000000..ada0268
--- /dev/null
+++ b/home-manager/polybar/config.ini
@@ -0,0 +1,183 @@
+;==========================================================
+;
+;
+; ██████╗ ██████╗ ██╗ ██╗ ██╗██████╗ █████╗ ██████╗
+; ██╔══██╗██╔═══██╗██║ ╚██╗ ██╔╝██╔══██╗██╔══██╗██╔══██╗
+; ██████╔╝██║ ██║██║ ╚████╔╝ ██████╔╝███████║██████╔╝
+; ██╔═══╝ ██║ ██║██║ ╚██╔╝ ██╔══██╗██╔══██║██╔══██╗
+; ██║ ╚██████╔╝███████╗██║ ██████╔╝██║ ██║██║ ██║
+; ╚═╝ ╚═════╝ ╚══════╝╚═╝ ╚═════╝ ╚═╝ ╚═╝╚═╝ ╚═╝
+;
+;
+; To learn more about how to configure Polybar
+; go to https://github.com/polybar/polybar
+;
+; The README contains a lot of information
+;
+;==========================================================
+;;;
+[colors]
+background = #cc292d3e
+background-alt = #cc292d3e
+foreground = #676e96
+primary = #676e96
+secondary = #8ABEB7
+alert = #BF00F6
+disabled = #515772
+active = #eeffff
+inactive = #515772
+
+[bar/status]
+width = 100%
+height = 19pt
+radius = 10
+
+monitor = ${env:MONITOR:}
+
+bottom = true
+
+; dpi = 96
+
+background = ${colors.background}
+foreground = ${colors.foreground}
+
+border-size = 6px
+border-color = #00000000
+
+padding-left = 0
+padding-right = 1
+border-top-size = 0
+
+module-margin = 1
+
+separator = "|"
+separator-foreground = ${colors.disabled}
+
+font-0 = Cousine Nerd Font;1
+
+modules-left = xworkspaces
+modules-right = pipewire xkeyboard memory cpu battery date tray
+; modules-center = xwindow
+
+cursor-click = pointer
+cursor-scroll = ns-resize
+
+enable-ipc = true
+
+; For center tray - also make sure to change the launch.sh
+tray-position = ${env:TRAY:}
+
+; wm-restack = generic
+; wm-restack = bspwm
+wm-restack = generic
+
+override-redirect = false
+
+
+[module/xworkspaces]
+pin-workspaces = true
+type = internal/xworkspaces
+
+label-active = %name%
+label-active-foreground = ${colors.active}
+label-active-padding = 1
+
+label-occupied = %name%
+label-occupied-foreground = ${colors.inactive}
+label-occupied-padding = 1
+
+label-urgent = %name%
+label-urgent-foreground = ${colors.inactive}
+label-urgent-background = ${colors.alert}
+label-urgent-padding = 1
+
+label-empty =
+label-empty-foreground = ${colors.inactive}
+label-empty-padding = 0
+
+[module/pipewire]
+type = internal/pulseaudio
+
+master-soundcard = hw:2
+master-mixer = Master
+mapped = true
+
+format-volume-prefix = "VOL "
+format-volume-prefix-foreground = ${colors.primary}
+format-volume = <label-volume>
+
+label-volume = %percentage%%
+
+label-muted = muted
+label-muted-foreground = ${colors.disabled}
+
+[module/battery]
+type = internal/battery
+low-at = 20
+full-at = 100
+battery = BAT1
+adapter = ACAD
+
+time-format = "%H:%M"
+
+format-charging-prefix = "BAT "
+format-discharging-prefix = "BAT "
+format-full-prefix = "BAT "
+format-charging-prefix-foreground = ${colors.primary}
+format-discharging-prefix-foreground = ${colors.primary}
+format-full-prefix-foreground = ${colors.primary}
+format-charging = "<label-charging>"
+format-discharging = "<label-discharging>"
+format-full = <label-full>
+
+label-charging = "%percentage%% - %time%"
+label-discharging = "%percentage%% - %time%"
+label-full = "FULL"
+
+[module/memory]
+type = internal/memory
+interval = 1
+format-prefix = "RAM "
+format-prefix-foreground = ${colors.primary}
+label = %percentage_used:2%%
+
+[module/cpu]
+type = internal/cpu
+interval = 1
+format-prefix = "CPU "
+format-prefix-foreground = ${colors.primary}
+label = %percentage:2%%
+
+[module/date]
+type = internal/date
+interval = 1
+
+date = %H:%M:%S
+date-alt = %H:%M:%S %d-%m-%Y
+
+label = %date%
+label-foreground = ${colors.primary}
+
+; Using polybar-git instead
+; [module/tray]
+; type = internal/tray
+; format = ${env:TRAY:}
+; tray-spacing = 5
+
+[module/xwindow]
+type = internal/xwindow
+format = <label>
+label = %title%
+label-maxlen = 60
+
+[module/xkeyboard]
+type = internal/xkeyboard
+format = <label-indicator>
+label-indicator-on-numlock = "NL"
+label-indicator-off-numlock = ""
+
+[settings]
+screenchange-reload = true
+pseudo-transparency = true
+
+; vim:ft=dosini
diff --git a/home-manager/polybar/default.nix b/home-manager/polybar/default.nix
new file mode 100644
index 0000000..5b51ac7
--- /dev/null
+++ b/home-manager/polybar/default.nix
@@ -0,0 +1,20 @@
+{
+ config,
+ pkgs,
+ ...
+} : {
+ home.file.".config/polybar/launch.sh" = {
+ source = ./launch.sh;
+ executable = true;
+ };
+ home.file.".config/polybar/config.ini" = {
+ source = ./config.ini;
+# onChange = ''
+#${pkgs.procps}/bin/pkill polybar
+#PATH=$PATH:${pkgs.polybarFull}/bin:${pkgs.lxrandr}/bin ~/.config/polybar/launch.sh
+#'';
+ };
+ home.packages = with pkgs; [
+ polybarFull
+ ];
+}
diff --git a/home-manager/polybar/launch.sh b/home-manager/polybar/launch.sh
new file mode 100755
index 0000000..00514be
--- /dev/null
+++ b/home-manager/polybar/launch.sh
@@ -0,0 +1,20 @@
+#!/usr/bin/env bash
+
+# Terminate already running bar instances
+# If all your bars have ipc enabled, you can use
+polybar-msg cmd quit
+# Otherwise you can use the nuclear option:
+# killall -q polybar
+
+# Launch bar1 and bar2
+echo "---" | tee -a /tmp/polybarstatus.log
+
+for m in $(xrandr --query | grep " connected" | cut -d" " -f1); do
+ if [ $(xrandr | grep $m | grep primary | wc -l) -eq 1 ]; then
+ MONITOR=$m TRAY="center" polybar status | tee -a /tmp/polybarstatus.log & disown
+ else
+ MONITOR=$m TRAY="" polybar status | tee -a /tmp/polybarstatus.log & disown
+ fi
+done
+
+echo "Bars launched..."
diff --git a/home-manager/rofi/config/config.rasi b/home-manager/rofi/config/config.rasi
new file mode 100644
index 0000000..cfda0ba
--- /dev/null
+++ b/home-manager/rofi/config/config.rasi
@@ -0,0 +1,145 @@
+configuration {
+modi: "window,run,drun,combi";
+width: 50;
+lines: 10;
+/* columns: 1;*/
+/* font: "mono 12";*/
+/* bw: 1;*/
+/* location: 0;*/
+/* padding: 5;*/
+/* yoffset: 0;*/
+/* xoffset: 0;*/
+/* fixed-num-lines: true;*/
+show-icons: true;
+/* terminal: "rofi-sensible-terminal";*/
+/* ssh-client: "ssh";*/
+/* ssh-command: "{terminal} -e {ssh-client} {host} [-p {port}]";*/
+/* run-command: "{cmd}";*/
+/* run-list-command: "";*/
+/* run-shell-command: "{terminal} -e {cmd}";*/
+/* window-command: "wmctrl -i -R {window}";*/
+/* window-match-fields: "all";*/
+/* icon-theme: ;*/
+/* drun-match-fields: "name,generic,exec,categories";*/
+/* drun-show-actions: false;*/
+/* drun-display-format: "{name} [<span weight='light' size='small'><i>({generic})</i></span>]";*/
+/* disable-history: false;*/
+/* ignored-prefixes: "";*/
+/* sort: false;*/
+/* sorting-method: ;*/
+/* case-sensitive: false;*/
+/* cycle: true;*/
+/* sidebar-mode: false;*/
+/* eh: 1;*/
+/* auto-select: false;*/
+/* parse-hosts: false;*/
+/* parse-known-hosts: true;*/
+combi-modi: "run,drun";
+/* matching: "normal";*/
+/* tokenize: true;*/
+/* m: "-5";*/
+/* line-margin: 2;*/
+/* line-padding: 1;*/
+/* filter: ;*/
+/* separator-style: "dash";*/
+/* hide-scrollbar: false;*/
+/* fullscreen: false;*/
+/* fake-transparency: false;*/
+/* dpi: -1;*/
+/* threads: 0;*/
+/* scrollbar-width: 8;*/
+/* scroll-method: 0;*/
+/* fake-background: "screenshot";*/
+/* window-format: "{w} {c} {t}";*/
+/* click-to-exit: true;*/
+/* show-match: true;*/
+/* color-normal: ;*/
+/* color-urgent: ;*/
+/* color-active: ;*/
+/* color-window: ;*/
+max-history-size: 25;
+/* combi-hide-mode-prefix: false;*/
+/* matching-negate-char: '-' /* unsupported */;*/
+/* cache-dir: ;*/
+/* pid: "/run/user/1000/rofi.pid";*/
+/* display-window: ;*/
+/* display-windowcd: ;*/
+/* display-run: ;*/
+/* display-ssh: ;*/
+/* display-drun: ;*/
+/* display-combi: ;*/
+/* display-keys: ;*/
+/* kb-primary-paste: "Control+V,Shift+Insert";*/
+/* kb-secondary-paste: "Control+v,Insert";*/
+/* kb-clear-line: "Control+w";*/
+/* kb-move-front: "Control+a";*/
+/* kb-move-end: "Control+e";*/
+/* kb-move-word-back: "Alt+b,Control+Left";*/
+/* kb-move-word-forward: "Alt+f,Control+Right";*/
+/* kb-move-char-back: "Left,Control+b";*/
+/* kb-move-char-forward: "Right,Control+f";*/
+/* kb-remove-word-back: "Control+Alt+h,Control+BackSpace";*/
+/* kb-remove-word-forward: "Control+Alt+d";*/
+/* kb-remove-char-forward: "Delete,Control+d";*/
+/* kb-remove-char-back: "BackSpace,Shift+BackSpace,Control+h";*/
+/* kb-remove-to-eol: "Control+k";*/
+/* kb-remove-to-sol: "Control+u";*/
+/* kb-accept-entry: "Control+j,Control+m,Return,KP_Enter";*/
+/* kb-accept-custom: "Control+Return";*/
+/* kb-accept-alt: "Shift+Return";*/
+/* kb-delete-entry: "Shift+Delete";*/
+/* kb-mode-next: "Shift+Right,Control+Tab";*/
+/* kb-mode-previous: "Shift+Left,Control+ISO_Left_Tab";*/
+/* kb-row-left: "Control+Page_Up";*/
+/* kb-row-right: "Control+Page_Down";*/
+ kb-row-up: "Up,Control+p,Alt+k";
+ kb-row-down: "Down,Control+n,Alt+j";
+/* kb-row-tab: "Tab";*/
+/* kb-page-prev: "Page_Up";*/
+/* kb-page-next: "Page_Down";*/
+/* kb-row-first: "Home,KP_Home";*/
+/* kb-row-last: "End,KP_End";*/
+/* kb-row-select: "Control+space";*/
+/* kb-screenshot: "Alt+S";*/
+/* kb-ellipsize: "Alt+period";*/
+/* kb-toggle-case-sensitivity: "grave,dead_grave";*/
+/* kb-toggle-sort: "Alt+grave";*/
+/* kb-cancel: "Escape,Control+g,Control+bracketleft";*/
+/* kb-custom-1: "Alt+1";*/
+/* kb-custom-2: "Alt+2";*/
+/* kb-custom-3: "Alt+3";*/
+/* kb-custom-4: "Alt+4";*/
+/* kb-custom-5: "Alt+5";*/
+/* kb-custom-6: "Alt+6";*/
+/* kb-custom-7: "Alt+7";*/
+/* kb-custom-8: "Alt+8";*/
+/* kb-custom-9: "Alt+9";*/
+/* kb-custom-10: "Alt+0";*/
+/* kb-custom-11: "Alt+exclam";*/
+/* kb-custom-12: "Alt+at";*/
+/* kb-custom-13: "Alt+numbersign";*/
+/* kb-custom-14: "Alt+dollar";*/
+/* kb-custom-15: "Alt+percent";*/
+/* kb-custom-16: "Alt+dead_circumflex";*/
+/* kb-custom-17: "Alt+ampersand";*/
+/* kb-custom-18: "Alt+asterisk";*/
+/* kb-custom-19: "Alt+parenleft";*/
+/* kb-select-1: "Super+1";*/
+/* kb-select-2: "Super+2";*/
+/* kb-select-3: "Super+3";*/
+/* kb-select-4: "Super+4";*/
+/* kb-select-5: "Super+5";*/
+/* kb-select-6: "Super+6";*/
+/* kb-select-7: "Super+7";*/
+/* kb-select-8: "Super+8";*/
+/* kb-select-9: "Super+9";*/
+/* kb-select-10: "Super+0";*/
+/* ml-row-left: "ScrollLeft";*/
+/* ml-row-right: "ScrollRight";*/
+/* ml-row-up: "ScrollUp";*/
+/* ml-row-down: "ScrollDown";*/
+/* me-select-entry: "MousePrimary";*/
+/* me-accept-entry: "MouseDPrimary";*/
+/* me-accept-custom: "Control+MouseDPrimary";*/
+}
+@theme "customised"
diff --git a/home-manager/rofi/config/customised.rasi b/home-manager/rofi/config/customised.rasi
new file mode 100644
index 0000000..d953062
--- /dev/null
+++ b/home-manager/rofi/config/customised.rasi
@@ -0,0 +1,195 @@
+/**
+ * I based mine of this one
+ */
+/**
+ * ROFI Color theme
+ * User: Qball
+ * Copyright: Dave Davenport
+ */
+
+* {
+ foreground: #a6accd;
+ backlight: #ccffeedd;
+ background-color: transparent;
+ dark: #1c1c1c;
+
+ //My colors
+ normal-background: #292d3e;
+ normal-text: #eeffff;
+ selected-background: #ab47bc;
+
+ // Black
+ black: #3d352a;
+ lightblack: #554444;
+ tlightblack: #554444cc;
+ //
+ // Red
+ red: #cd5c5c;
+ lightred: #cc5533;
+ //
+ // Green
+ green: #86af80;
+ lightgreen: #88cc22;
+ //
+ // Yellow
+ yellow: #e8ae5b;
+ lightyellow: #ffa75d;
+ //
+ // Blue
+ blue: #6495ed;
+ lightblue: #87ceeb;
+ //
+ // Magenta
+ magenta: #deb887;
+ lightmagenta: #996600;
+ //
+ // Cyan
+ cyan: #b0c4de;
+ tcyan: #ccb0c4de;
+ lightcyan: #b0c4de;
+ //
+ // White
+ white: #bbaa99;
+ lightwhite: #ddccbb;
+ //
+ // Bold, Italic, Underline
+ highlight: underline bold #ffffff;
+
+ transparent: rgba(0,0,0,0);
+ font: "Cousine Nerd Font 10";
+}
+#window {
+ location: center;
+ anchor: center;
+ padding: 10px;
+ border-radius: 10px;
+ color: @magenta;
+ background-color: @transparent;
+ spacing: 0;
+ children: [mainbox];
+ orientation: horizontal;
+}
+
+#mainbox {
+ spacing: 0;
+ children: [ inputbar, message, listview ];
+ //border: 2px;
+ border-color: @normal-text;
+ border-radius: 15px;
+}
+
+#message {
+ border-color: @normal-text;
+ border: 0px 2px 2px 2px;
+ border-radius: 10px;
+ padding: 5;
+ background-color: @tcyan;
+}
+#message {
+ font: "Cousine Nerd Font 10";
+ color: @black;
+}
+
+#inputbar {
+ color: @normal-text;
+ padding: 11px;
+ background-color: @normal-background;
+ //border: 2px 2px 2px 2px;
+ border-radius: 15px 15px 0px 0px;
+ border-color: @normal-text;
+ font: "Cousine Nerd Font 10";
+}
+#entry,prompt,case-indicator {
+ text-font: inherit;
+ text-color:inherit;
+}
+#prompt {
+ margin: 0px 0.3em 0em 0em ;
+}
+#listview {
+ //padding: 8px;
+ border-radius: 0px 0px 15px 15px;
+ border-color: @normal-text;
+ //border: 0px 2px 2px 2px;
+ background-color: @normal-background;
+ dynamic: false;
+ // lines: 10;
+}
+#element {
+ padding: 4px 4px 4px 11px;
+ vertical-align: 0.5;
+ //border: 2px;
+ border-radius: 0px;
+ background-color: transparent;
+ color: @foreground;
+ font:inherit;
+}
+element-text
+{
+ background-color: inherit;
+ text-color: inherit;
+}
+element-icon {
+ size: 2ch;
+}
+#element selected.normal {
+ background-color: @selected-background;
+ color: @normal-text;
+}
+#element normal active {
+ foreground: @selected-background;
+}
+#element normal urgent {
+ foreground: @lightred;
+}
+#element alternate normal {
+}
+#element alternate active {
+ foreground: @selected-background;
+}
+#element alternate urgent {
+ foreground: @lightred;
+}
+#element selected active {
+ background-color: @selected-background;
+ foreground: @selected-background;
+}
+#element selected urgent {
+ background-color: @lightred;
+ foreground: @dark;
+}
+#element normal normal {
+
+}
+
+#vertb {
+ expand: false;
+ children: [ dummy0, mode-switcher, dummy1 ];
+}
+#dummy0, dummy1 {
+ expand: true;
+}
+
+#mode-switcher {
+ expand: false;
+ orientation: vertical;
+ spacing: 0px;
+ //border: 0px 0px 0px 0px;
+}
+#button {
+ font: "Cousine Nerd Font 10";
+ padding: 6px;
+ //border: 2px 0px 2px 2px;
+ border-radius: 4px 0px 0px 4px;
+ background-color: @tlightblack;
+ border-color: @normal-text;
+ color: @foreground;
+ horizontal-align: 0.5;
+}
+#button selected normal {
+ color: @dark;
+ //border: 2px 0px 2px 2px;
+ background-color: @backlight;
+ border-color: @normal-text;
+}
+
diff --git a/home-manager/rofi/default.nix b/home-manager/rofi/default.nix
new file mode 100644
index 0000000..678fd71
--- /dev/null
+++ b/home-manager/rofi/default.nix
@@ -0,0 +1,13 @@
+{
+ pkgs,
+ config,
+ ...
+}: {
+ home.file.".config/rofi" = {
+ source = ./config;
+ recursive = true;
+ };
+ home.packages = [
+ pkgs.rofi-wayland
+ ];
+}
diff --git a/home-manager/shells/bash.nix b/home-manager/shells/bash.nix
new file mode 100644
index 0000000..a902af3
--- /dev/null
+++ b/home-manager/shells/bash.nix
@@ -0,0 +1,80 @@
+{ pkgs, ... } :
+{
+ programs.bash = {
+ enable = true;
+ enableCompletion = true;
+ initExtra = ''
+tabs 4
+clear
+PF_INFO="ascii title os kernel uptime memory shell wm" pfetch
+
+# Fancy prompt
+export PROMPT_COMMAND=__prompt_command
+__prompt_command() {
+ local exit="$?"
+ PS1=""
+ local reset='\[\e[0m\]'
+ local white='\[\e[97m\]'
+ local blue='\[\e[38;5;25m\]'
+ local bgblue='\[\e[48;5;25m\]'
+ local green='\[\e[38;5;34m\]'
+ local bggreen='\[\e[48;5;34m\]'
+ local gray='\[\e[38;5;238m\]'
+ local bggray='\[\e[48;5;238m\]'
+ local red='\[\e[38;5;124m\]'
+ local bgred='\[\e[48;5;124m\]'
+
+ # Add user
+ PS1+="$white$bgblue \u$blue"
+ # Add SHLVL (shell depth)
+ if [ $SHLVL -gt 2 ]; then
+ PS1+="$bggreen$white $(($SHLVL - 2))$reset$green"
+ fi
+ # Add dir
+ PS1+="$bggray$white \w$reset$gray"
+
+ if [ $exit != 0 ]; then
+ # Change end color
+ #PS1+="$bgred$white \w$reset$red"
+ # Add exit code
+ PS1+="$bgred$white $exit$reset$red"
+ else
+ # Change end color
+ #PS1+="$bggray$white \w$reset$gray"
+ # Add end cap
+ PS1+=""
+ fi
+ PS1+="$reset "
+}
+# Powerline prompt
+#export PS1='\[\e[48;5;25;38;5;189m\] \u \[\e[48;5;238;38;5;25m\] \[\e[48;5;238;38;5;189m\]\w \[\e[0m\]\[\e[38;5;238m\]\[\e[0m\] '
+
+# Multiline prompt
+#export PS1="\[\e[32m\]╭──\[\e[31m\](\[\e[34m\]\u\[\e[33m\]@\[\e[34m\]\h\[\e[31m\])\[\e[32m\]-\[\e[31m\](\[\e[34m\]\w\[\e[31m\])\[\e[32m\]-\[\e[31m\](\[\e[34m\]\d\[\e[31m\])
+#\[\e[32m\]╰\[\e[0m\] "
+'';
+ shellAliases = {
+ cm = "cmatrix -absu 2";
+ pipes = "pipes.sh -KR -p 3 -t3 -c 1 -c 2 -c 3 -c 4 -c 5 -c 6";
+ cl = "clear";
+ ls = "lsd";
+ la = "lsd -a";
+ ll = "lsd -al";
+ pathfindsaver = "while sleep 1; do pathfind -f; done";
+ qalc = "qalc -s 'varunits 0' -s 'angle 2'";
+ };
+ };
+
+ programs.zoxide = {
+ enable = true;
+ enableBashIntegration = true;
+ options = [ "--cmd cd" ];
+ };
+
+ home.packages = with pkgs; [
+ zoxide
+ pfetch
+ lsd
+ libqalculate
+ ];
+}
diff --git a/home-manager/waybar/config/config.jsonc b/home-manager/waybar/config/config.jsonc
new file mode 100644
index 0000000..8dcf08a
--- /dev/null
+++ b/home-manager/waybar/config/config.jsonc
@@ -0,0 +1,57 @@
+{
+ "layer": "bottom",
+ "position": "bottom",
+ "height": 30,
+ "modules-left": ["hyprland/workspaces"],
+ "modules-center": [],
+ "modules-right": ["tray", "pulseaudio", "memory", "cpu", "battery", "clock"],
+ "hyprland/workspaces": {
+ "format": "{icon} {name}",
+ "on-click": "activate",
+ "on-scroll-up": "hyprctl dispatch workspace e+1",
+ "on-scroll-down": "hyprctl dispatch workspace e-1",
+ "format-icons": {
+ "urgent": "",
+ "active": "",
+ "default": ""
+ },
+ "sort-by-number": true
+ },
+ "tray": {
+ "spacing": 5,
+ },
+ "pulseaudio": {
+ "scroll-step": 5.0,
+ "on-click": "pamixer -t",
+ "format": " {volume}%",
+ "format-muted": " {volume}%",
+ },
+ "memory": {
+ "format": "󰍛 {percentage}%"
+ },
+ "cpu": {
+ "format": " {usage}%"
+ },
+ "battery": {
+ "format": "{icon} {time} {capacity}%",
+ "format-time": " {H}:{M}",
+ "format-icons": ["", "", "", "", ""]
+ },
+ "clock": {
+ "format": "󰥔 {:%H:%M:%S}",
+ "format-alt": "󰥔 {:%a, %d. %b %H:%M:%S}",
+ "interval": 1
+ },
+ "network": {
+ "interface": "wlp2s0",
+ "format": "{ifname}",
+ "format-wifi": "{essid} ({signalStrength}%) ",
+ "format-ethernet": "{ipaddr}/{cidr} 󰊗",
+ "format-disconnected": "",
+ "tooltip-format": "{ifname} via {gwaddr} 󰊗",
+ "tooltip-format-wifi": "{essid} ({signalStrength}%) ",
+ "tooltip-format-ethernet": "{ifname} ",
+ "tooltip-format-disconnected": "Disconnected",
+ "max-length": 50
+ }
+}
diff --git a/home-manager/waybar/config/style.css b/home-manager/waybar/config/style.css
new file mode 100644
index 0000000..3a9b5b5
--- /dev/null
+++ b/home-manager/waybar/config/style.css
@@ -0,0 +1,71 @@
+* {
+ font-family: "Cousine Nerd Font";
+ font-size: 13px;
+}
+window#waybar {
+ background-color: alpha(#292D3E, 0);
+}
+.modules-right {
+ margin-right: 7px;
+}
+.modules-right > * > * {
+ padding-left: 10px;
+ padding-right: 10px;
+ border-radius: 10px;
+ margin-left: 5px;
+ margin-right: 5px;
+ margin-bottom: 12px;
+ color: #eeffff;
+ background-color: #292D3E;
+}
+
+.modules-right > *:nth-child(1) > * {
+ background-color: shade(alpha(#c792ea, 1), 0.75);
+}
+.modules-right > *:nth-child(2) > * {
+ background-color: shade(alpha(#82aaff, 1), 0.75);
+}
+.modules-right > *:nth-child(3) > * {
+ background-color: shade(alpha(#c3e88d, 1), 0.75);
+}
+.modules-right > *:nth-child(4) > * {
+ background-color: shade(alpha(#89ddff, 1), 0.75);
+}
+.modules-right > *:nth-child(5) > * {
+ background-color: shade(alpha(#f78c6c, 1), 0.75);
+}
+.modules-right > *:nth-child(6) > * {
+ background-color: shade(alpha(#ffcb6b, 1), 0.75);
+}
+
+#workspaces {
+ background-color: #292D3E;
+ border-radius: 10px;
+ margin-left: 12px;
+ margin-bottom: 12px;
+}
+
+#workspaces button {
+ padding-left: 10px;
+ padding-right: 10px;
+ border: none;
+ color: #eeffff;
+}
+#workspaces button:hover {
+ box-shadow: none;
+ text-shadow: none;
+ background: none;
+ transition: none;
+ /*background-color: shade(alpha(#c792ea, 0.8), 0.75);
+ transition: background-color 0.2s;*/
+ color: shade(#c792ea, 0.75);
+ transition: color 0.2s;
+}
+.modules-center > * > * {
+ padding-left: 10px;
+ padding-right: 10px;
+ border-radius: 10px;
+ margin-bottom: 12px;
+ color: #eeffff;
+ background-color: #292D3E;
+}
diff --git a/home-manager/waybar/default.nix b/home-manager/waybar/default.nix
new file mode 100644
index 0000000..7649870
--- /dev/null
+++ b/home-manager/waybar/default.nix
@@ -0,0 +1,16 @@
+{
+ config,
+ pkgs,
+ ...
+} : {
+ home.file.".config/waybar/" = {
+ source = ./config;
+ onChange = "${pkgs.procps}/bin/pkill waybar && ${pkgs.hyprland}/bin/hyprctl dispatch exec waybar || ${pkgs.hyprland}/bin/hyprctl dispatch exec waybar";
+ recursive = true;
+ };
+ home.packages = with pkgs; [
+ waybar
+ pamixer
+ wtype
+ ];
+}
diff --git a/wallpaper.png b/wallpaper.png
new file mode 100644
index 0000000..3698495
--- /dev/null
+++ b/wallpaper.png
Binary files differ