diff options
| author | BossCode45 <boss@tehbox.org> | 2025-05-09 11:27:42 +1200 |
|---|---|---|
| committer | BossCode45 <boss@tehbox.org> | 2025-05-09 11:30:29 +1200 |
| commit | 7072cf1bdf2b8e4183ccb0247d8c5fa266ae315f (patch) | |
| tree | cde5b9785060504e680b0e1acc468849dfd6145c | |
| parent | cd74ab83ed8215dfc87e538395ee9af56a56c893 (diff) | |
| download | nixos-configuration-7072cf1bdf2b8e4183ccb0247d8c5fa266ae315f.tar.gz nixos-configuration-7072cf1bdf2b8e4183ccb0247d8c5fa266ae315f.zip | |
Initial commit
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 Binary files differnew file mode 100644 index 0000000..3698495 --- /dev/null +++ b/wallpaper.png |
