From 3534a7d1ce1116f4b30016cccf1ec7a2a332446a Mon Sep 17 00:00:00 2001 From: Sweetbread Date: Thu, 29 Aug 2024 21:56:25 +0300 Subject: [PATCH] system: new user --- flake.nix | 58 ++- home-manager/{ => users/chest}/home.nix | 0 .../{ => users/chest}/modules/alacritty.nix | 0 .../{ => users/chest}/modules/bundle.nix | 0 home-manager/users/chest/modules/git.nix | 7 + home-manager/users/chest/modules/qt.nix | 7 + home-manager/users/chest/modules/sops.nix | 8 + .../{ => users/chest}/modules/style.nix | 0 .../users/chest/modules/wms/hyprland.nix | 275 +++++++++++ .../{ => users/chest}/modules/wms/mako.nix | 0 .../{ => users/chest}/modules/wms/waybar.nix | 0 .../{ => users/chest}/modules/wms/wofi.nix | 0 home-manager/{ => users/chest}/secrets.yaml | 0 home-manager/{ => users/chest}/zsh.nix | 0 home-manager/users/sweetbread/home.nix | 13 + .../users/sweetbread/modules/alacritty.nix | 21 + .../users/sweetbread/modules/bundle.nix | 15 + .../{ => users/sweetbread}/modules/git.nix | 0 .../{ => users/sweetbread}/modules/htop.nix | 0 .../{ => users/sweetbread}/modules/qt.nix | 0 .../{ => users/sweetbread}/modules/sops.nix | 0 .../users/sweetbread/modules/style.nix | 36 ++ .../sweetbread}/modules/wms/hyprland.nix | 0 .../users/sweetbread/modules/wms/mako.nix | 12 + .../users/sweetbread/modules/wms/waybar.nix | 455 ++++++++++++++++++ .../users/sweetbread/modules/wms/wofi.nix | 7 + home-manager/users/sweetbread/secrets.yaml | 23 + home-manager/users/sweetbread/zsh.nix | 46 ++ nixos/hosts/Rias/configuration.nix | 1 + nixos/hosts/popka/configuration.nix | 37 ++ nixos/modules/bundle.nix | 1 - nixos/modules/users/chest.nix | 16 + .../{user.nix => users/sweetbread.nix} | 1 - 33 files changed, 1021 insertions(+), 18 deletions(-) rename home-manager/{ => users/chest}/home.nix (100%) rename home-manager/{ => users/chest}/modules/alacritty.nix (100%) rename home-manager/{ => users/chest}/modules/bundle.nix (100%) create mode 100644 home-manager/users/chest/modules/git.nix create mode 100644 home-manager/users/chest/modules/qt.nix create mode 100644 home-manager/users/chest/modules/sops.nix rename home-manager/{ => users/chest}/modules/style.nix (100%) create mode 100644 home-manager/users/chest/modules/wms/hyprland.nix rename home-manager/{ => users/chest}/modules/wms/mako.nix (100%) rename home-manager/{ => users/chest}/modules/wms/waybar.nix (100%) rename home-manager/{ => users/chest}/modules/wms/wofi.nix (100%) rename home-manager/{ => users/chest}/secrets.yaml (100%) rename home-manager/{ => users/chest}/zsh.nix (100%) create mode 100644 home-manager/users/sweetbread/home.nix create mode 100644 home-manager/users/sweetbread/modules/alacritty.nix create mode 100644 home-manager/users/sweetbread/modules/bundle.nix rename home-manager/{ => users/sweetbread}/modules/git.nix (100%) rename home-manager/{ => users/sweetbread}/modules/htop.nix (100%) rename home-manager/{ => users/sweetbread}/modules/qt.nix (100%) rename home-manager/{ => users/sweetbread}/modules/sops.nix (100%) create mode 100644 home-manager/users/sweetbread/modules/style.nix rename home-manager/{ => users/sweetbread}/modules/wms/hyprland.nix (100%) create mode 100644 home-manager/users/sweetbread/modules/wms/mako.nix create mode 100644 home-manager/users/sweetbread/modules/wms/waybar.nix create mode 100644 home-manager/users/sweetbread/modules/wms/wofi.nix create mode 100644 home-manager/users/sweetbread/secrets.yaml create mode 100644 home-manager/users/sweetbread/zsh.nix create mode 100644 nixos/hosts/popka/configuration.nix create mode 100644 nixos/modules/users/chest.nix rename nixos/modules/{user.nix => users/sweetbread.nix} (89%) diff --git a/flake.nix b/flake.nix index 85046cf..468383c 100644 --- a/flake.nix +++ b/flake.nix @@ -21,26 +21,52 @@ system = "x86_64-linux"; in { - nixosConfigurations.Rias = nixpkgs.lib.nixosSystem { - specialArgs = { - pkgs-stable = import nixpkgs-stable { - inherit system; - config.allowUnfree = true; + nixosConfigurations = { + Rias = nixpkgs.lib.nixosSystem { + specialArgs = { + pkgs-stable = import nixpkgs-stable { + inherit system; + config.allowUnfree = true; + }; + inherit inputs system; }; - inherit inputs system; + modules = [ + ./nixos/hosts/Rias/configuration.nix + ]; + }; + + popka = nixpkgs.lib.nixosSystem { + specialArgs = { + pkgs-stable = import nixpkgs-stable { + inherit system; + config.allowUnfree = true; + }; + inherit inputs system; + }; + modules = [ + ./nixos/hosts/popka/configuration.nix + ]; }; - modules = [ - ./nixos/hosts/Rias/configuration.nix - ]; }; - homeConfigurations.sweetbread = home-manager.lib.homeManagerConfiguration { - pkgs = nixpkgs.legacyPackages.${system}; - modules = [ - ./home-manager/home.nix - inputs.sops-nix.homeManagerModules.sops - inputs.stylix.homeManagerModules.stylix - ]; + homeConfigurations = { + sweetbread = home-manager.lib.homeManagerConfiguration { + pkgs = nixpkgs.legacyPackages.${system}; + modules = [ + ./home-manager/users/sweetbread/home.nix + inputs.sops-nix.homeManagerModules.sops + inputs.stylix.homeManagerModules.stylix + ]; + }; + + chest = home-manager.lib.homeManagerConfiguration { + pkgs = nixpkgs.legacyPackages.${system}; + modules = [ + ./home-manager/users/chest/home.nix + inputs.sops-nix.homeManagerModules.sops + inputs.stylix.homeManagerModules.stylix + ]; + }; }; }; } diff --git a/home-manager/home.nix b/home-manager/users/chest/home.nix similarity index 100% rename from home-manager/home.nix rename to home-manager/users/chest/home.nix diff --git a/home-manager/modules/alacritty.nix b/home-manager/users/chest/modules/alacritty.nix similarity index 100% rename from home-manager/modules/alacritty.nix rename to home-manager/users/chest/modules/alacritty.nix diff --git a/home-manager/modules/bundle.nix b/home-manager/users/chest/modules/bundle.nix similarity index 100% rename from home-manager/modules/bundle.nix rename to home-manager/users/chest/modules/bundle.nix diff --git a/home-manager/users/chest/modules/git.nix b/home-manager/users/chest/modules/git.nix new file mode 100644 index 0000000..4322379 --- /dev/null +++ b/home-manager/users/chest/modules/git.nix @@ -0,0 +1,7 @@ +{ + programs.git = { + enable = true; + userName = "cheeest"; + userEmail = "a.e.sunduk@gmail.com"; + }; +} diff --git a/home-manager/users/chest/modules/qt.nix b/home-manager/users/chest/modules/qt.nix new file mode 100644 index 0000000..792c144 --- /dev/null +++ b/home-manager/users/chest/modules/qt.nix @@ -0,0 +1,7 @@ +{ + qt = { + enable = true; + platformTheme = "qtct"; + style.name = "kvantum"; + }; +} diff --git a/home-manager/users/chest/modules/sops.nix b/home-manager/users/chest/modules/sops.nix new file mode 100644 index 0000000..e6e32ce --- /dev/null +++ b/home-manager/users/chest/modules/sops.nix @@ -0,0 +1,8 @@ +{ config, ... }: { + sops = { + defaultSopsFile = ../secrets.yaml; + age.keyFile = "/home/chest/.config/sops/age/keys.txt"; + + secrets."tokens/apis/wallhaven" = {}; + }; +} diff --git a/home-manager/modules/style.nix b/home-manager/users/chest/modules/style.nix similarity index 100% rename from home-manager/modules/style.nix rename to home-manager/users/chest/modules/style.nix diff --git a/home-manager/users/chest/modules/wms/hyprland.nix b/home-manager/users/chest/modules/wms/hyprland.nix new file mode 100644 index 0000000..87c1ff6 --- /dev/null +++ b/home-manager/users/chest/modules/wms/hyprland.nix @@ -0,0 +1,275 @@ +{ pkgs, lib, config, ... }: { + wayland.windowManager.hyprland = + let + colors = config.lib.stylix.colors; + + wallpaper_changer = pkgs.writers.writePython3Bin "wallpaper_changer" { + flakeIgnore = [ "E501" "E111" "E701" "E241" "E731" ]; + } /*py*/ '' + import requests as requests + from random import choice + from os import system, mkdir, listdir + from os.path import exists + + notify = lambda s: system(f"notify-desktop Wallpaper '{s}'") + folder = "/home/chest/Wallpapers" + url = "https://wallhaven.cc/api/v1/collections/sweetbread/1764377" + with open("${config.sops.secrets."tokens/apis/wallhaven".path}") as f: + token = f.read() + + notify("Updating wallpaper!") + + try: + json = requests.get(url, params={'apikey': token}).json() + + wallpaper = choice(json['data']) + link = wallpaper['path'] + format = wallpaper['file_type'] + id = wallpaper['id'] + + if format == "image/jpeg": ext = "jpg" + else: ext = "png" + + filename = f"{id}.{ext}" + + if not exists(f"{folder}/{filename}"): + if not exists(folder): + mkdir(f"{folder}") + + notify("Downloading...") + with open(f"{folder}/{filename}", 'wb') as f: + r = requests.get(link) + f.write(r.content) + + except requests.exceptions.ConnectionError: + notify("Offline mode") + filename = choice(listdir(folder)) + + finally: + system(f"swww img {folder}/{filename} --transition-type center") + ''; + in { + enable = true; + xwayland.enable = true; + + settings = { + "$mainMod" = "SUPER"; + + monitor = ",preferred,auto,1"; + + env = [ + "LIBVA_DRIVER_NAME,nvidia" + "XDG_SESSION_TYPE,wayland" + "GBM_BACKEND,nvidia" + "__GLX_VENDOR_LIBRARY_NAME,nvidia" + "WLR_NO_HARDWARE_CURSORS,1" + "XDG_CURRENT_DESKTOP,Hyprland" + "XDG_SESSION_TYPE,wayland" + "XDG_SESSION_DESKTOP,Hyprland" + "XCURSOR_SIZE,36" + "QT_QPA_PLATFORM,wayland" + "XDG_SCREENSHOTS_DIR,~/screens" + ]; + + debug = { + disable_logs = false; + enable_stdout_logs = true; + }; + + input = { + kb_layout = "us,ru"; + kb_variant = "lang"; + kb_options = "grp:caps_toggle"; + + follow_mouse = 1; + + touchpad = { + natural_scroll = false; + }; + + sensitivity = 0; # -1.0 - 1.0, 0 means no modification. + }; + + general = { + gaps_in = 5; + gaps_out = 20; + border_size = 3; + "col.active_border" = "rgba(${colors.base0C}ee) rgba(${colors.base0B}ee) 45deg"; + "col.inactive_border" = "rgba(${colors.base05}aa)"; + + layout = "dwindle"; + }; + + decoration = { + rounding = 10; + + blur = { + enabled = true; + size = 16; + passes = 2; + new_optimizations = true; + }; + + drop_shadow = true; + shadow_range = 4; + shadow_render_power = 3; + "col.shadow" = "rgba(1a1a1aee)"; + }; + + animations = { + enabled = true; + + bezier = "myBezier, 0.05, 0.9, 0.1, 1.05"; + # bezier = "myBezier, 0.33, 0.82, 0.9, -0.08"; + + animation = [ + "windows, 1, 7, myBezier" + "windowsOut, 1, 7, default, popin 80%" + "border, 1, 10, default" + "borderangle, 1, 8, default" + "fade, 1, 7, default" + "workspaces, 1, 6, default" + ]; + }; + + dwindle = { + pseudotile = true; # master switch for pseudotiling. Enabling is bound to mainMod + P in the keybinds section below + smart_split = true; + }; + + master = { + new_status = "master"; + }; + + gestures = { + workspace_swipe = true; + workspace_swipe_fingers = 3; + workspace_swipe_invert = true; + workspace_swipe_distance = 200; + workspace_swipe_forever = true; + }; + + misc = { + animate_manual_resizes = true; + animate_mouse_windowdragging = true; + enable_swallow = true; + render_ahead_of_time = false; + disable_hyprland_logo = false; + }; + + windowrule = [ + "float, ^(imv)$" + "float, ^(feh)$" + "float, ^(mpv)$" + "float, ^(nmtui)$" + "float, title:^(Список друзей)" + ]; + + exec-once = [ + "systemctl --user start plasma-polkit-agent" + "swww init" + "python3 ${lib.getExe wallpaper_changer}" + "waybar" + "wl-paste --type text --watch cliphist store" + "wl-paste --type image --watch cliphist store" + ]; + + bind = [ + "$mainMod, V, exec, cliphist list | wofi --dmenu | cliphist decode | wl-copy" + + "$mainMod, Return, exec, alacritty" + "$mainMod, Q, killactive," + "$mainMod, M, exit," + "$mainMod, E, exec, alacritty -e sh -c yazi" + "$mainMod, F, togglefloating," + "$mainMod, D, exec, wofi --show drun" + "$mainMod, P, pseudo, # dwindle" + "$mainMod, J, togglesplit, # dwindle" + + # Move focus with mainMod + arrow keys + "$mainMod, left, movefocus, l" + "$mainMod, right, movefocus, r" + "$mainMod, up, movefocus, u" + "$mainMod, down, movefocus, d" + + # Moving windows + "$mainMod SHIFT, left, swapwindow, l" + "$mainMod SHIFT, right, swapwindow, r" + "$mainMod SHIFT, up, swapwindow, u" + "$mainMod SHIFT, down, swapwindow, d" + + # Window resizing X Y + "$mainMod CTRL, left, resizeactive, -60 0" + "$mainMod CTRL, right, resizeactive, 60 0" + "$mainMod CTRL, up, resizeactive, 0 -60" + "$mainMod CTRL, down, resizeactive, 0 60" + + # Switch workspaces with mainMod + [0-9] + "$mainMod, 1, workspace, 1" + "$mainMod, 2, workspace, 2" + "$mainMod, 3, workspace, 3" + "$mainMod, 4, workspace, 4" + "$mainMod, 5, workspace, 5" + "$mainMod, 6, workspace, 6" + "$mainMod, 7, workspace, 7" + "$mainMod, 8, workspace, 8" + "$mainMod, 9, workspace, 9" + "$mainMod, 0, workspace, 10" + + # Move active window to a workspace with mainMod + SHIFT + [0-9] + "$mainMod SHIFT, 1, movetoworkspacesilent, 1" + "$mainMod SHIFT, 2, movetoworkspacesilent, 2" + "$mainMod SHIFT, 3, movetoworkspacesilent, 3" + "$mainMod SHIFT, 4, movetoworkspacesilent, 4" + "$mainMod SHIFT, 5, movetoworkspacesilent, 5" + "$mainMod SHIFT, 6, movetoworkspacesilent, 6" + "$mainMod SHIFT, 7, movetoworkspacesilent, 7" + "$mainMod SHIFT, 8, movetoworkspacesilent, 8" + "$mainMod SHIFT, 9, movetoworkspacesilent, 9" + "$mainMod SHIFT, 0, movetoworkspacesilent, 10" + + "$mainMod SHIFT, F, fullscreen" + + # Scroll through existing workspaces with mainMod + scroll + "$mainMod, mouse_down, workspace, e+1" + "$mainMod, mouse_up, workspace, e-1" + + # Keyboard backlight + "$mainMod, F3, exec, brightnessctl -d *::kbd_backlight set +33%" + "$mainMod, F2, exec, brightnessctl -d *::kbd_backlight set 33%-" + + # Volume and Media Control + ", XF86AudioRaiseVolume, exec, pamixer -i 5 " + ", XF86AudioLowerVolume, exec, pamixer -d 5 " + ", XF86AudioMute, exec, pamixer -t" + ", XF86AudioMicMute, exec, pamixer --default-source -m" + + # Brightness control + ", XF86MonBrightnessDown, exec, brightnessctl set 5%- " + ", XF86MonBrightnessUp, exec, brightnessctl set +5% " + + # Configuration files + ''$mainMod ALT, N, exec, alacritty -e sh -c "rb"'' + ''$mainMod ALT, C, exec, alacritty -e sh -c "conf"'' + ''$mainMod ALT, H, exec, alacritty -e sh -c "$EDITOR ~/nix/home-manager/modules/wms/hyprland.nix"'' + ''$mainMod ALT, W, exec, alacritty -e sh -c "$EDITOR ~/nix/home-manager/modules/wms/waybar.nix"'' + '', Print, exec, grim -g "$(slurp)" - | swappy -f -'' + + # Waybar + "$mainMod, B, exec, pkill -SIGUSR1 waybar" + #"$mainMod, W, exec, pkill -SIGUSR2 waybar" + + "$mainMod, W, exec, python3 ${lib.getExe wallpaper_changer}" + + # Disable all effects + "$mainMod Shift, G, exec, ~/.config/hypr/gamemode.sh " + ]; + + # Move/resize windows with mainMod + LMB/RMB and dragging + bindm = [ + "$mainMod, mouse:272, movewindow" + "$mainMod, mouse:273, resizewindow" + ]; + }; + }; +} diff --git a/home-manager/modules/wms/mako.nix b/home-manager/users/chest/modules/wms/mako.nix similarity index 100% rename from home-manager/modules/wms/mako.nix rename to home-manager/users/chest/modules/wms/mako.nix diff --git a/home-manager/modules/wms/waybar.nix b/home-manager/users/chest/modules/wms/waybar.nix similarity index 100% rename from home-manager/modules/wms/waybar.nix rename to home-manager/users/chest/modules/wms/waybar.nix diff --git a/home-manager/modules/wms/wofi.nix b/home-manager/users/chest/modules/wms/wofi.nix similarity index 100% rename from home-manager/modules/wms/wofi.nix rename to home-manager/users/chest/modules/wms/wofi.nix diff --git a/home-manager/secrets.yaml b/home-manager/users/chest/secrets.yaml similarity index 100% rename from home-manager/secrets.yaml rename to home-manager/users/chest/secrets.yaml diff --git a/home-manager/zsh.nix b/home-manager/users/chest/zsh.nix similarity index 100% rename from home-manager/zsh.nix rename to home-manager/users/chest/zsh.nix diff --git a/home-manager/users/sweetbread/home.nix b/home-manager/users/sweetbread/home.nix new file mode 100644 index 0000000..33417d1 --- /dev/null +++ b/home-manager/users/sweetbread/home.nix @@ -0,0 +1,13 @@ +{ + + imports = [ + ./zsh.nix + ./modules/bundle.nix + ]; + + home = { + username = "sweetbread"; + homeDirectory = "/home/sweetbread"; + stateVersion = "23.11"; + }; +} diff --git a/home-manager/users/sweetbread/modules/alacritty.nix b/home-manager/users/sweetbread/modules/alacritty.nix new file mode 100644 index 0000000..fee9d21 --- /dev/null +++ b/home-manager/users/sweetbread/modules/alacritty.nix @@ -0,0 +1,21 @@ +{ lib, ... }: { + programs.alacritty = { + enable = true; + settings = { + window = { + opacity = lib.mkDefault 0.5; + blur = true; + }; + + font = lib.mkDefault { + size = 13.0; + normal = { + family = "JetBrains Mono"; + style = "Bold"; + }; + }; + + colors.primary.background = lib.mkDefault "#1d2021"; + }; + }; +} diff --git a/home-manager/users/sweetbread/modules/bundle.nix b/home-manager/users/sweetbread/modules/bundle.nix new file mode 100644 index 0000000..185a00e --- /dev/null +++ b/home-manager/users/sweetbread/modules/bundle.nix @@ -0,0 +1,15 @@ +{ + imports = [ + ./git.nix + ./htop.nix + ./alacritty.nix + ./qt.nix + ./sops.nix + ./style.nix + + ./wms/hyprland.nix + ./wms/waybar.nix + ./wms/wofi.nix + ./wms/mako.nix + ]; +} diff --git a/home-manager/modules/git.nix b/home-manager/users/sweetbread/modules/git.nix similarity index 100% rename from home-manager/modules/git.nix rename to home-manager/users/sweetbread/modules/git.nix diff --git a/home-manager/modules/htop.nix b/home-manager/users/sweetbread/modules/htop.nix similarity index 100% rename from home-manager/modules/htop.nix rename to home-manager/users/sweetbread/modules/htop.nix diff --git a/home-manager/modules/qt.nix b/home-manager/users/sweetbread/modules/qt.nix similarity index 100% rename from home-manager/modules/qt.nix rename to home-manager/users/sweetbread/modules/qt.nix diff --git a/home-manager/modules/sops.nix b/home-manager/users/sweetbread/modules/sops.nix similarity index 100% rename from home-manager/modules/sops.nix rename to home-manager/users/sweetbread/modules/sops.nix diff --git a/home-manager/users/sweetbread/modules/style.nix b/home-manager/users/sweetbread/modules/style.nix new file mode 100644 index 0000000..94ba86e --- /dev/null +++ b/home-manager/users/sweetbread/modules/style.nix @@ -0,0 +1,36 @@ +{ pkgs, config, lib, ... }: { + stylix = { + enable = true; + targets = { + hyprland.enable = false; + waybar.enable = false; + }; + + base16Scheme = "${pkgs.base16-schemes}/share/themes/catppuccin-mocha.yaml"; + polarity = "dark"; + + image = pkgs.fetchurl { + url = "https://w.wallhaven.cc/full/kx/wallhaven-kxedr7.jpg"; + sha256 = "0ypqnq7bsr2giq7nq1c3xrw2m0gkii9j5zhfp512r93wc96zvm50"; + }; + + fonts = { + monospace = { + name = "JetBrains Mono"; + package = pkgs.jetbrains-mono; + }; + + sizes = { + applications = 13; + desktop = 12; + }; + }; + + opacity = { + popups = .8; + terminal = .5; + }; + }; + + xdg.configFile."helix/config.toml".text = ''theme = "catppuccin_mocha"''; +} diff --git a/home-manager/modules/wms/hyprland.nix b/home-manager/users/sweetbread/modules/wms/hyprland.nix similarity index 100% rename from home-manager/modules/wms/hyprland.nix rename to home-manager/users/sweetbread/modules/wms/hyprland.nix diff --git a/home-manager/users/sweetbread/modules/wms/mako.nix b/home-manager/users/sweetbread/modules/wms/mako.nix new file mode 100644 index 0000000..b010503 --- /dev/null +++ b/home-manager/users/sweetbread/modules/wms/mako.nix @@ -0,0 +1,12 @@ +{ + xdg.configFile."mako/config".text = '' + background-color=#303446 + text-color=#c6d0f5 + border-color=#8caaee + progress-color=over #414559 + default-timeout=5000 + + [urgency=high] + border-color=#ef9f76 + ''; +} diff --git a/home-manager/users/sweetbread/modules/wms/waybar.nix b/home-manager/users/sweetbread/modules/wms/waybar.nix new file mode 100644 index 0000000..edb29f9 --- /dev/null +++ b/home-manager/users/sweetbread/modules/wms/waybar.nix @@ -0,0 +1,455 @@ +{ pkgs, config, ...}: { + home.packages = [ pkgs.pulsemixer ]; + wayland.windowManager.hyprland.settings.windowrule = [ + "float, ^(pulsemixer)" + "float, ^(nmtui)" + ]; + + xdg.configFile."waybar/scripts/wttr.py".source = pkgs.requireFile { + name = "waybar-wttr.py"; + url = "https://gist.githubusercontent.com/bjesus/f8db49e1434433f78e5200dc403d58a3/raw/47f9ffd573dc8e8edce0ea6708601b8e685a70ab/waybar-wttr.py"; + sha256 = "15j2cqg405q37wrrlm70mhp7rx6xnrn92rfm1ix6g3nl98ksh45g"; + }; + + programs.waybar = + let + colors = config.lib.stylix.colors; + in { + enable = true; + + settings = { + mainBar = { + layer = "top"; + position = "top"; + margin = "9 13 -10 18"; + + modules-left = ["hyprland/workspaces" "hyprland/language" "keyboard-state" "hyprland/submap"]; + modules-center = ["mpris" "wlr/taskbar"]; + modules-right = ["group/system" "battery" "pulseaudio" "clock" "tray"]; + + "hyprland/workspaces" = { + disable-scroll = true; + }; + + "wlr/taskbar" = { + on-click = "activate"; + on-click-middle = "close"; + on-click-right = "minimize"; + }; + + "group/system" = { + orientation = "inherit"; + drawer = { + transition-duration = 500; + transition-left-to-right = false; + }; + modules = [ + "network" + "custom/mem" + "cpu" + "temperature" + "backlight" + ]; + }; + + + "hyprland/language" = { + format-en = "US"; + format-ru = "RU"; + min-length = 5; + tooltip = false; + }; + + "keyboard-state" = { + capslock = true; + format = "{icon}"; + format-icons = { + locked = "CUPS"; + unlocked = ""; + }; + }; + + "clock" = { + tooltip = false; + format = "{:%a, %d %b %R}"; + }; + + "custom/weather" = { + format = "{}"; + tooltip = true; + interval = 1800; + exec = "python3 $HOME/.config/waybar/scripts/wttr.py"; + return-type = "json"; + }; + + "pulseaudio" = { + # scroll-step = 1; # %, can be a float + reverse-scrolling = 1; + format = "{volume}% {icon} {format_source}"; + format-bluetooth = "{volume}% {icon} {format_source}"; + format-bluetooth-muted = " {icon} {format_source}"; + format-muted = " {format_source}"; + format-source = "{volume}% "; + format-source-muted = ""; + format-icons = { + headphone = ""; + hands-free = ""; + headset = ""; + phone = ""; + portable = ""; + car = ""; + default = ["" "" ""]; + }; + on-click = "alacritty --class pulsemixer -e pulsemixer"; + min-length = 13; + }; + + "custom/mem" = { + format = "{} "; + interval = 3; + exec = "free -h | awk '/Mem:/{printf $3}'"; + tooltip = false; + }; + + "cpu" = { + interval = 2; + format = "{usage}% "; + min-length = 6; + }; + + "temperature" = { + # thermal-zone = 2; + # hwmon-path = "/sys/class/hwmon/hwmon2/temp1_input"; + critical-threshold = 80; + # format-critical = "{temperatureC}°C {icon}"; + format = "{temperatureC}°C {icon}"; + format-icons = ["" "" "" "" ""]; + tooltip = false; + }; + + "network" = { + format = "{ifname}"; + format-wifi = "{essid} ({signalStrength}%) "; + format-ethernet = "{ifname} "; + format-disconnected = ""; + tooltip-format = "{ifname}"; + tooltip-format-wifi = "{essid} ({signalStrength}%) "; + tooltip-format-ethernet = "{ifname} "; + tooltip-format-disconnected = "Disconnected"; + max-length = 50; + on-click = "alacritty --class nmtui -e sh -c nmtui"; + }; + + "backlight" = { + device = "intel_backlight"; + format = "{percent}% {icon}"; + format-icons = [""]; + min-length = 7; + }; + + battery = { + states = { + warning = 30; + critical = 15; + }; + format = "{capacity}%"; + format-charging = "{capacity}% {time}"; + format-plugged = "{capacity}%"; + format-alt = "{time}"; + format-time = "{H}:{m}"; + }; + + mpris = { + format = "{title}"; + format-len = "20"; + }; + + tray = { + icon-size = 16; + spacing = 0; + }; + + }; + }; + + style = /*css*/ + '' +* { + border: none; + border-radius: 0; + /* `otf-font-awesome` is required to be installed for icons */ + font-family: JetBrains Mono; + font-weight: bold; + min-height: 20px; +} + +window#waybar { + background: transparent; +} + +window#waybar.hidden { + opacity: 0.2; +} + +#workspaces { + margin-right: 8px; + border-radius: 10px; + transition: none; + background: #${colors.base00}; +} + +#workspaces button { + transition: none; + color: #${colors.base04}; + background: transparent; + padding: 5px; + font-size: 18px; +} + +#workspaces button.persistent { + font-size: 12px; +} + +/* https://github.com/Alexays/Waybar/wiki/FAQ#the-workspace-buttons-have-a-strange-hover-effect */ +#workspaces button:hover { + transition: none; + box-shadow: inherit; + text-shadow: inherit; + border-radius: inherit; + color: #${colors.base05}; +} + +#workspaces button.active { + background: #${colors.base02}; + color: #${colors.base05}; + border-radius: inherit; +} + +#taskbar { + border-radius: 10px; + color: #${colors.base05}; + background: #${colors.base00}; +} + +#taskbar button { + transition: none; + background: transparent; + border-radius: 10px; + padding: 8px; + margin: 0px; +} + +#taskbar button:hover { + transition: none; + box-shadow: inherit; + text-shadow: inherit; + border-radius: inherit; + background: #${colors.base02}; +} + +#taskbar button.active { + background: #${colors.base0B}; +} + +#language { + padding: 8px 0px 8px 8px; + border-radius: 10px 0px 0px 10px; + transition: none; + color: #${colors.base05}; + background: #${colors.base00}; +} + +#keyboard-state { + margin-right: 8px; + padding: 8px 8px 8px 0px; + border-radius: 0px 10px 10px 0px; + transition: none; + color: #${colors.base05}; + background: #${colors.base00}; +} + +#custom-pacman { + padding-left: 16px; + padding-right: 8px; + border-radius: 10px 0px 0px 10px; + transition: none; + color: #${colors.base05}; + background: #${colors.base00}; +} + +#custom-mail { + margin-right: 8px; + padding-right: 16px; + border-radius: 0px 10px 10px 0px; + transition: none; + color: #${colors.base05}; + background: #${colors.base00}; +} + +#submap { + padding-left: 16px; + padding-right: 16px; + border-radius: 10px; + transition: none; + color: #${colors.base05}; + background: #${colors.base00}; +} + +#clock { + margin-right: 8px; + padding-left: 16px; + padding-right: 16px; + border-radius: 10px; + transition: none; + color: #${colors.base05}; + background: #${colors.base00}; +} + +#network { + margin-right: 8px; + padding-left: 16px; + padding-right: 16px; + border-radius: 10px; + transition: none; + color: #${colors.base05}; + background: #${colors.base00}; +} + +#network.disconnected { + color: #${colors.base00}; + background-color: #${colors.base08}; +} + +#custom-weather { + padding-right: 16px; + border-radius: 0px 10px 10px 0px; + transition: none; + color: #${colors.base05}; + background: #${colors.base00}; +} + +#pulseaudio { + margin-right: 8px; + padding-left: 16px; + padding-right: 16px; + border-radius: 10px; + transition: none; + color: #${colors.base05}; + background: #${colors.base00}; +} + +#pulseaudio.muted { + background-color: #${colors.base08}; + color: #${colors.base01}; +} + +#custom-mem { + margin-right: 8px; + padding-left: 16px; + padding-right: 16px; + border-radius: 10px; + transition: none; + color: #${colors.base05}; + background: #${colors.base00}; +} + +#cpu { + margin-right: 8px; + padding-left: 16px; + padding-right: 16px; + border-radius: 10px; + transition: none; + color: #${colors.base05}; + background: #${colors.base00}; +} + +#temperature { + margin-right: 8px; + padding-left: 16px; + padding-right: 16px; + border-radius: 10px; + transition: none; + color: #${colors.base05}; + background: #${colors.base00}; +} + +#temperature.critical { + background-color: #${colors.base08}; +} + +#backlight { + margin-right: 8px; + padding-left: 16px; + padding-right: 16px; + border-radius: 10px; + transition: none; + color: #${colors.base05}; + background: #${colors.base00}; +} + +#battery { + margin-right: 8px; + padding-left: 16px; + padding-right: 16px; + border-radius: 10px; + transition: none; + color: #${colors.base05}; + background: #${colors.base00}; +} + +#battery.charging { + color: #${colors.base05}; + background-color: #${colors.base0B}; +} + +#battery.warning:not(.charging) { + background-color: #${colors.base09}; + color: black; +} + +#battery.critical:not(.charging) { + background-color: #${colors.base08}; + color: #${colors.base05}; + animation-name: blink; + animation-duration: 0.5s; + animation-timing-function: linear; + animation-iteration-count: infinite; + animation-direction: alternate; +} + +#tray { + padding-left: 16px; + padding-right: 16px; + border-radius: 10px; + transition: none; + color: #${colors.base05}; + background: #${colors.base00}; +} + +#mpris{ + background: #${colors.base00}; + border-radius: 10px; + color: #${colors.base05}; + padding: 0px 8px; + margin: 0px 8px; +} + +#mpris.playing { + background-color: #${colors.base0B}; + color: #${colors.base01}; +} + +#mpris.paused { + background-color: #${colors.base0A}; + color: #${colors.base01}; +} + +@keyframes blink { + to { + background-color: #${colors.base05}; + color: #${colors.base00}; + } +} + ''; + }; +} diff --git a/home-manager/users/sweetbread/modules/wms/wofi.nix b/home-manager/users/sweetbread/modules/wms/wofi.nix new file mode 100644 index 0000000..351d7f3 --- /dev/null +++ b/home-manager/users/sweetbread/modules/wms/wofi.nix @@ -0,0 +1,7 @@ +{ pkgs, ... }: { + xdg.configFile."wofi/style.css".source = pkgs.requireFile { + name = "style.css"; + url = "https://raw.githubusercontent.com/PaulGuerre/arch_dotfiles/main/wofi/style.css"; + sha256 = "16lr4j0nn6kpggr4wdz9s0jymqmn05vm7i4vsdslzp5vlarcv03j"; + }; +} diff --git a/home-manager/users/sweetbread/secrets.yaml b/home-manager/users/sweetbread/secrets.yaml new file mode 100644 index 0000000..77c7123 --- /dev/null +++ b/home-manager/users/sweetbread/secrets.yaml @@ -0,0 +1,23 @@ +tokens: + apis: + wallhaven: ENC[AES256_GCM,data:mawmbX0FQkhQHruABPc34mm+QtyEv6SulAXOGL6tMoQ=,iv:P+LtVoGzhc9kv4XUXOIJCosg52JXBAyWTQ+os9clibg=,tag:TQ0dLVKDkAo20p4w9HKn2g==,type:str] +sops: + kms: [] + gcp_kms: [] + azure_kv: [] + hc_vault: [] + age: + - recipient: age1j3uuyax673fvl5x4dveupq3dylngnrq0e5uy7fmclsexkfd25vysk646wk + enc: | + -----BEGIN AGE ENCRYPTED FILE----- + YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBnbDl6ZWZpc2U2SnNYQVpJ + cmtBRzVOZTdOaXd6MFFnTGFLbzBhNldlN25RCisyNnAwY21udlZCWEc4U2hPa2di + WXN5cEduMXUwNXpmU0hBQzdkamtSd28KLS0tIHUzd3RTbUM4VnFYZkRYbXJCUDZl + UkZPZUlLQVNUZ1ZGV3BZM3hib3JHMXcKqyQUcRMhoVHK78lAYl2vSJUCxBL6atLb + VXT5DV67KKnUKyKUAQ+gjEP9EpvR16PBCZ+EcSFfx/azHONCtV3mZg== + -----END AGE ENCRYPTED FILE----- + lastmodified: "2024-08-26T18:55:20Z" + mac: ENC[AES256_GCM,data:x9TX4OfDmw8qySadz/l5BUTyQLsOnROKASMn34Ps5Sb0LzYKrlQoHPQhiJ6YVNfYE+7WtNMqoQvUEjg9FQfEVcH5PFeXZjAaeLKDvEhgXjklhrSfbWCn7a+1yIbwutKb63cIuMh9ZcDUCmtAZlt+FssI/TjB0k5QqV4a358hjQE=,iv:GJWGCINdJr3HLX33YFEqTE+TlmfCpZBCLBUUHGSvvG8=,tag:6sKlM2/3r3os1h0U5ToqiA==,type:str] + pgp: [] + unencrypted_suffix: _unencrypted + version: 3.9.0 diff --git a/home-manager/users/sweetbread/zsh.nix b/home-manager/users/sweetbread/zsh.nix new file mode 100644 index 0000000..290f79f --- /dev/null +++ b/home-manager/users/sweetbread/zsh.nix @@ -0,0 +1,46 @@ +{ config, ... }: { + programs.zoxide.enable = true; + programs.zsh = { + enable = true; + enableCompletion = true; + # enableAutosuggestions = true; + autosuggestion.enable = true; + syntaxHighlighting.enable = true; + + shellAliases = + let + flakeDir = "~/nix"; + in { + rb = "sudo nixos-rebuild switch --flake ${flakeDir}"; + upd = "nix flake update ${flakeDir}"; + upg = "sudo nixos-rebuild switch --upgrade --flake ${flakeDir}"; + + hms = "home-manager switch --flake ${flakeDir}"; + + conf = "$EDITOR ${flakeDir}/nixos/hosts/$(hostname)/configuration.nix"; + pkgs = "$EDITOR ${flakeDir}/nixos/packages.nix"; + + ll = "ls -l"; + se = "sudoedit"; + ff = "fastfetch"; + cat = "bat"; + cd = "z"; + }; + + initExtra = '' + if [ -z "''${WAYLAND_DISPLAY}" ] && [ "''${XDG_VTNR}" -eq 1 ]; then + dbus-run-session Hyprland + fi + eval "$(zoxide init zsh)" + ''; + + history.size = 10000; + history.path = "${config.xdg.dataHome}/zsh/history"; + + oh-my-zsh = { + enable = true; + plugins = [ "git" "sudo" ]; + theme = "agnoster"; # blinks is also really nice + }; + }; +} diff --git a/nixos/hosts/Rias/configuration.nix b/nixos/hosts/Rias/configuration.nix index bd72df3..e445dcc 100644 --- a/nixos/hosts/Rias/configuration.nix +++ b/nixos/hosts/Rias/configuration.nix @@ -4,6 +4,7 @@ ../../packages.nix ../../modules/bundle.nix ../../modules/gamemode.nix + ../../modules/users/sweetbread.nix ]; networking.hostName = "Rias"; diff --git a/nixos/hosts/popka/configuration.nix b/nixos/hosts/popka/configuration.nix new file mode 100644 index 0000000..39e72e5 --- /dev/null +++ b/nixos/hosts/popka/configuration.nix @@ -0,0 +1,37 @@ +{ config, pkgs, ...}: { + imports = [ + ./hardware-configuration.nix + ../../packages.nix + ../../modules/bundle.nix + ../../modules/gamemode.nix + ../../modules/users/chest.nix + ]; + + networking.hostName = "popka"; + + time.timeZone = "Europe/Moscow"; + + i18n.defaultLocale = "ru_RU.UTF-8"; + + nix.settings.experimental-features = [ "nix-command" "flakes" ]; + + system.stateVersion = "23.05"; + + hardware.graphics = { + enable = true; + enable32Bit = true; + extraPackages = with pkgs; [nvidia-vaapi-driver intel-media-driver]; + extraPackages32 = with pkgs.pkgsi686Linux; [nvidia-vaapi-driver intel-media-driver]; + }; + + services.xserver.videoDrivers = [ "nvidia" ]; + + hardware.nvidia = { + modesetting.enable = true; + powerManagement.enable = true; + powerManagement.finegrained = false; + open = false; + nvidiaSettings = true; + package = config.boot.kernelPackages.nvidiaPackages.stable; + }; +} diff --git a/nixos/modules/bundle.nix b/nixos/modules/bundle.nix index 23efd00..3cd7b20 100644 --- a/nixos/modules/bundle.nix +++ b/nixos/modules/bundle.nix @@ -4,7 +4,6 @@ ./sound.nix ./zram.nix ./env.nix - ./user.nix ./nm.nix ./virtmanager.nix ./hyprland.nix diff --git a/nixos/modules/users/chest.nix b/nixos/modules/users/chest.nix new file mode 100644 index 0000000..3261c65 --- /dev/null +++ b/nixos/modules/users/chest.nix @@ -0,0 +1,16 @@ +{ pkgs, ... }: { + programs.zsh.enable = true; + + users = { + defaultUserShell = pkgs.zsh; + + users.sweetbread = { + isNormalUser = true; + description = "Chest"; + extraGroups = [ "networkmanager" "wheel" "input" "libvirtd" ]; + packages = with pkgs; []; + }; + }; + + services.getty.autologinUser = "chest"; +} diff --git a/nixos/modules/user.nix b/nixos/modules/users/sweetbread.nix similarity index 89% rename from nixos/modules/user.nix rename to nixos/modules/users/sweetbread.nix index e78c7f8..db73224 100644 --- a/nixos/modules/user.nix +++ b/nixos/modules/users/sweetbread.nix @@ -12,6 +12,5 @@ }; }; - # Enable automatic login for the user. services.getty.autologinUser = "sweetbread"; }