diff options
Diffstat (limited to 'home')
| -rw-r--r-- | home/alacritty/default.nix | 12 | ||||
| -rw-r--r-- | home/default.nix | 71 | ||||
| -rw-r--r-- | home/dunst/default.nix | 75 | ||||
| -rw-r--r-- | home/fish/default.nix | 14 | ||||
| -rw-r--r-- | home/git/default.nix | 11 | ||||
| -rw-r--r-- | home/helix/default.nix | 35 | ||||
| -rw-r--r-- | home/hyprland/default.nix | 66 | ||||
| -rw-r--r-- | home/hyprland/hyprpaper.conf | 2 | ||||
| -rw-r--r-- | home/lock/default.nix | 62 | ||||
| -rw-r--r-- | home/waybar/config | 160 | ||||
| -rw-r--r-- | home/waybar/default.nix | 6 | ||||
| -rw-r--r-- | home/waybar/style.css | 258 |
12 files changed, 772 insertions, 0 deletions
diff --git a/home/alacritty/default.nix b/home/alacritty/default.nix new file mode 100644 index 0000000..5bed57a --- /dev/null +++ b/home/alacritty/default.nix @@ -0,0 +1,12 @@ +{ vars, pkgs, ... }: + +{ + programs.alacritty = { + enable = true; + settings = { + selection = { + save_to_clipboard = true; + }; + }; + }; +} diff --git a/home/default.nix b/home/default.nix new file mode 100644 index 0000000..15054ab --- /dev/null +++ b/home/default.nix @@ -0,0 +1,71 @@ +{ inputs, lib, config, vars, pkgs, ... }: + +{ + imports = [ + ./hyprland + ./waybar + ./dunst + ./lock + ./git + ./helix + ./fish + ./alacritty + ]; + + home = { + username = "${vars.user}"; + sessionVariables = { + EDITOR = "${pkgs.helix}/bin/hx"; + PAGER = "${pkgs.moar}/bin/moar"; + DEFAULT_BROWSER = "${pkgs.firefox}/bin/firefox"; + NIXOS_OZONE_WL = "1"; + MOZ_USE_XINPUT2 = "1"; + MOZ_ENABLE_WAYLAND = "1"; + GDK_SCALE = "1"; + CURSOR_SIZE = "16"; + }; + pointerCursor = { + package = pkgs.bibata-cursors; + gtk.enable = true; + name = "Bibata-Modern-Ice"; + size = 22; + }; + homeDirectory = "/home/${vars.user}"; + packages = with pkgs; [ + clang + gnumake + biome + go + mpv + brightnessctl + bluez + element-desktop-wayland + yamlfmt + dprint + nodePackages.jsdoc + nodePackages.typescript-language-server + alacritty + pavucontrol + moar + zathura + grim + slurp + fd + wl-clipboard + hyprpaper + waybar + wofi + dunst + ]; + }; + + xdg.mimeApps = { + enable = true; + defaultApplications = { + "application/pdf" = "zathura.desktop"; + }; + }; + programs.home-manager.enable = true; + systemd.user.startServices = "sd-switch"; + home.stateVersion = "23.11"; +} diff --git a/home/dunst/default.nix b/home/dunst/default.nix new file mode 100644 index 0000000..8a5f4ad --- /dev/null +++ b/home/dunst/default.nix @@ -0,0 +1,75 @@ +{ config, pkgs, ... }: { + services.dunst = { + enable = true; + settings = { + global = { + alignment = "center"; + allow_markup = true; + browser = + "${config.programs.firefox.package}/bin/firefox -new-tab"; + bounce_freq = 0; + corner_radius = 5; + dmenu = "${pkgs.rofi}/bin/rofi -dmenu"; + follow = "mouse"; + font = "Fira Code 10"; + format = '' + <b>%s</b> + %b + %p''; + frame_color = "#555555"; + frame_width = 2; + geometry = "400-30+30"; + horizontal_padding = 15; + icon_position = "off"; + idle_threshold = 120; + ignore_newline = false; + indicate_hidden = true; + line_height = 0; + markup = "full"; + max_icon_size = 130; + padding = 15; + separator_color = "frame"; + separator_height = 2; + show_age_threshold = 60; + shrink = true; + sort = true; + startup_notification = false; + sticky_history = true; + transparency = 0; + word_wrap = true; + }; + + frame = { + width = 2; + color = "#83a598"; + }; + + urgency_low = { + frame_color = "#fabd2f"; + background = "#282828"; + foreground = "#ebdbb2"; + timeout = 5; + }; + + urgency_normal = { + background = "#282828"; + foreground = "#ebdbb2"; + timeout = 15; + }; + + urgency_critical = { + background = "#282828"; + foreground = "#ebdbb2"; + frame_color = "#CC241D"; + timeout = 0; + }; + + shortcuts = { + close = "ctrl+space"; + close_all = "ctrl+shift+space"; + history = "ctrl+grave"; + context = "ctrl+shift+period"; + }; + }; + }; +} diff --git a/home/fish/default.nix b/home/fish/default.nix new file mode 100644 index 0000000..af2a377 --- /dev/null +++ b/home/fish/default.nix @@ -0,0 +1,14 @@ +{ vars, pkgs, ... }: + +{ + programs.fish = { + enable = true; + interactiveShellInit = '' + function fish_greeting + if status is-interactive + fastfetch + end + end + ''; + }; +} diff --git a/home/git/default.nix b/home/git/default.nix new file mode 100644 index 0000000..d3c605e --- /dev/null +++ b/home/git/default.nix @@ -0,0 +1,11 @@ +{pkgs, ...}:{ + programs.git = { + enable = true; + userName = "Petri Hienonen"; + userEmail = "petri.hienonen@gmail.com"; + extraConfig = { + init.defaultBranch = "master"; + credential.helper = "store"; + }; + }; +} diff --git a/home/helix/default.nix b/home/helix/default.nix new file mode 100644 index 0000000..2438703 --- /dev/null +++ b/home/helix/default.nix @@ -0,0 +1,35 @@ +{ + inputs, + pkgs, + ... +}: { + programs.helix = { + enable = true; + settings = { + theme = "catppuccin_mocha"; + editor = { + color-modes = true; + cursorline = true; + cursor-shape = { + insert = "bar"; + normal = "block"; + select = "underline"; + }; + indent-guides.render = true; + lsp.display-inlay-hints = true; + statusline.center = ["position-percentage"]; + true-color = true; + whitespace.characters = { + newline = "↴"; + tab = "⇥"; + }; + }; + + keys.normal.space.u = { + f = ":format"; # format using LSP formatter + w = ":set whitespace.render all"; + W = ":set whitespace.render none"; + }; + }; + }; +} diff --git a/home/hyprland/default.nix b/home/hyprland/default.nix new file mode 100644 index 0000000..e00e794 --- /dev/null +++ b/home/hyprland/default.nix @@ -0,0 +1,66 @@ +{ + + wayland.windowManager.hyprland = { + enable = true; + systemd.enable = true; + settings = { + "exec-once" = "waybar & hyprpaper"; + "monitor" = ",preferred,auto,1"; + input = { + kb_layout = "fi"; + repeat_delay = 280; + repeat_rate = 100; + }; + + "$mainMod" = "SUPER"; + bind = [ + "$mainMod, Return, exec, alacritty" + "$mainMod, d, exec, wofi --show drun" + "$mainMod, B, exec, firefox" + "$mainMod, F, fullscreen" + "$mainMod, C, killactive," + + # Move focus with mainMod + arrow keys + "$mainMod, left, movefocus, l" + "$mainMod, right, movefocus, r" + "$mainMod, up, movefocus, u" + "$mainMod, down, movefocus, d" + "$mainMod, H, movefocus, l" + "$mainMod, L, movefocus, r" + "$mainMod, K, movefocus, u" + "$mainMod, J, movefocus, d" + + # 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, movetoworkspace, 1" + "$mainMod SHIFT, 2, movetoworkspace, 2" + "$mainMod SHIFT, 3, movetoworkspace, 3" + "$mainMod SHIFT, 4, movetoworkspace, 4" + "$mainMod SHIFT, 5, movetoworkspace, 5" + "$mainMod SHIFT, 6, movetoworkspace, 6" + "$mainMod SHIFT, 7, movetoworkspace, 7" + "$mainMod SHIFT, 8, movetoworkspace, 8" + "$mainMod SHIFT, 9, movetoworkspace, 9" + "$mainMod SHIFT, 0, movetoworkspace, 10" + ]; + bindm = [ + # Move/resize windows with mainMod + LMB/RMB and dragging + "$mainMod, mouse:272, movewindow" + "$mainMod, mouse:273, resizewindow" + ]; + }; + }; + + home.file.".config/hypr/hyprpaper.conf".source = ./hyprpaper.conf; +} diff --git a/home/hyprland/hyprpaper.conf b/home/hyprland/hyprpaper.conf new file mode 100644 index 0000000..67a04ed --- /dev/null +++ b/home/hyprland/hyprpaper.conf @@ -0,0 +1,2 @@ +preload = ~/wallpapers/metsapalo.jpg +wallpaper = eDP-1,~/wallpapers/metsapalo.jpg diff --git a/home/lock/default.nix b/home/lock/default.nix new file mode 100644 index 0000000..188d4b7 --- /dev/null +++ b/home/lock/default.nix @@ -0,0 +1,62 @@ +{ pkgs, ... }: + +{ + programs.swaylock = { + enable = true; + + package = pkgs.swaylock-effects; + settings = { + ignore-empty-password = true; + disable-caps-lock-text = true; + # font = "MonaspiceAr Nerd Font"; + grace = 3; + + clock = true; + timestr = "%R"; + datestr = "%a, %e of %B"; + + fade-in = "0.2"; + + effect-blur = "10x2"; + effect-scale = "0.1"; + + indicator = true; + indicator-radius = 240; + indicator-thickness = 20; + indicator-caps-lock = true; + + key-hl-color = "#8aadf4"; + bs-hl-color = "#ed8796"; + caps-lock-key-hl-color = "#f5a97f"; + caps-lock-bs-hl-color = "#ed8796"; + + separator-color = "#181926"; + + inside-color = "#24273a"; + inside-clear-color = "#24273a"; + inside-caps-lock-color = "#24273a"; + inside-ver-color = "#24273a"; + inside-wrong-color = "#24273a"; + + ring-color = "#1e2030"; + ring-clear-color = "#8aadf4"; + ring-caps-lock-color = "231f20D9"; + ring-ver-color = "#1e2030"; + ring-wrong-color = "#ed8796"; + + line-color = "#8aadf4"; + line-clear-color = "#8aadf4"; + line-caps-lock-color = "#f5a97f"; + line-ver-color = "#181926"; + line-wrong-color = "#ed8796"; + + text-color = "#8aadf4"; + text-clear-color = "#24273a"; + text-caps-lock-color = "#f5a97f"; + text-ver-color = "#24273a"; + text-wrong-color = "#24273a"; + + debug = true; + }; + }; +} diff --git a/home/waybar/config b/home/waybar/config new file mode 100644 index 0000000..779a9a1 --- /dev/null +++ b/home/waybar/config @@ -0,0 +1,160 @@ +{ + // ------------------------------------------------------------------------- + // Global configuration + // ------------------------------------------------------------------------- + "ipc": true, + "position": "bottom", + "layer": "top", + "height": 30, + "mode": "dock", + "modules-left": [ + "hyprland/hide", + "hyprland/mode", + "hyprland/workspaces", + "disk", + "memory", + "cpu", + "temperature", + "custom/spotify" + ], + "modules-center": [ + "hyprland/window" + ], + "modules-right": [ + "pulseaudio", + "battery", + "backlight", + "clock#date", + "clock#time", + "network", + "tray" + ], + // ------------------------------------------------------------------------- + // Modules + // ------------------------------------------------------------------------- + "hyprland/hide": { + "hide-on-startup": true + }, + "battery": { + "interval": 1, + "states": { + "low": 30, + "warning": 15, + "critical": 5 + }, + "format": "{icon} {capacity}%", + "format-discharging": "{icon} {capacity}%", + "format-charging": " {capacity}%", + "tooltip-format": "{time} left", + "format-icons": [ + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + ], + "tooltip": true, + "full-at": 95 + }, + "clock#time": { + "interval": 10, + "format": "{:%H:%M}", + "tooltip": false + }, + "clock#date": { + "interval": 60, + "format": "{:%A, %e %b %Y}", + "tooltip": true + }, + "cpu": { + "interval": 2, + "tooltip": true, + "format": " {usage}%", + "states": { + "low": 0, + "normal": 20, + "warning": 70, + "critical": 90 + } + }, + "memory": { + "interval": 5, + "format": " {used:0.1f}G", + "tooltip-format": "{used:0.1f}G / {total:0.1f}G", + "states": { + "warning": 70, + "critical": 90 + } + }, + "network": { + "interval": 1, + "format-wifi": "{icon}", + "format-disconnected": "", + "format-icons": [ + "", + "", + "", + "", + "" + ], + "tooltip-format": "{essid} ({signalStrength}%) - {ifname} - {ipaddr} - {bandwidthDownBits} {bandwidthUpBits}", + "tooltip": true, + }, + "hyprland/mode": { + "format": "<span style=\"italic\"> {}</span>", + "tooltip": false + }, + "hyprland/window": { + "format": "{}", + "max-length": 60, + "tooltip": true + }, + "hyprland/workspaces": { + "all-outputs": true, + "format": "{icon}" + }, + "pulseaudio": { + "scroll-step": 1, + "format": "{icon} {volume}%", + "format-muted": "", + "format-bluetooth": " {icon} {volume}%", + "format-bluetooth-muted": "", + "on-click": "pulseaudio-control togmute", + "on-click-middle": "pulseaudio-control --sink-blacklist 'alsa_output.pci-0000_00_1f.3-platform-skl_hda_dsp_generic.HiFi__hw_sofhdadsp_3__sink,alsa_output.pci-0000_00_1f.3-platform-skl_hda_dsp_generic.HiFi__hw_sofhdadsp_4__sink,alsa_output.pci-0000_00_1f.3-platform-skl_hda_dsp_generic.HiFi__hw_sofhdadsp_5__sink' next-sink" + }, + "temperature": { + "critical-threshold": 90, + "interval": 5, + "format": "{icon} {temperatureC}°C", + "format-icons": [ + "", + "", + "", + "", + "" + ], + "tooltip": true + }, + "disk": { + "interval": 10, + "format": "{free}" + }, + "backlight": { + "device": "intel_backlight", + "format": "{icon} {percent}", + "format-icons": [ + "" + ], + "on-scroll-up": "brightnessctl set +1% -e 6 -n 1", + "on-scroll-down": "brightnessctl set 1%- -e 6 -n 1" + }, + "tray": { + "icon-size": 24, + "spacing": 10 + } +} diff --git a/home/waybar/default.nix b/home/waybar/default.nix new file mode 100644 index 0000000..bfe3c39 --- /dev/null +++ b/home/waybar/default.nix @@ -0,0 +1,6 @@ +{ + programs.waybar = { enable = true; }; + + home.file."./config/waybar/config".source = ./config; + home.file."./config/waybar/style.css".source = ./style.css; +} diff --git a/home/waybar/style.css b/home/waybar/style.css new file mode 100644 index 0000000..8fe60c7 --- /dev/null +++ b/home/waybar/style.css @@ -0,0 +1,258 @@ +@keyframes blink-low { + 70% { + color: @foreground; + } + + to { + color: @foreground; + background-color: #744E0D; + } +} + +@keyframes blink-warning { + 70% { + color: @foreground; + } + + to { + color: @foreground; + background-color: @warning; + } +} + +@keyframes blink-critical { + 70% { + color: @foreground; + } + + to { + color: @foreground; + background-color: @critical; + } +} + + +/* ----------------------------------------------------------------------------- + * Styles + * -------------------------------------------------------------------------- */ + +/* Nord */ +/* Gruvbox */ +@define-color foreground #D4BE98; +@define-color background #202020; +@define-color backgroundlight #2A2A2A; +@define-color mode #a89984; +@define-color workspaces #458588; +@define-color workspacesfocused #83a598; +@define-color sound #E78A4E; +@define-color network #A9B665; +@define-color memory #7DAEA3; +@define-color cpu #8EC07C; +@define-color layout #689d6a; +@define-color battery #A9B665; +@define-color date #282828; +@define-color time #ebdbb2; +@define-color warning #DE655E; +@define-color critical #FB4934; +@define-color temp #A9B665; + +/* Reset all styles */ +* { + border: none; + border-radius: 0; + min-height: 0; + margin: 0; + padding: 0; +} + +/* The whole bar */ +#waybar { + background: @background; + color: @foreground; + font-family: Sarasa Term K, JetBrainsMono Nerd Font, Material Design Icons, unifont, Fira Code, Terminus, Siji; + font-size: 12pt; + font-weight: bold; +} + +/* Each module */ +#battery, +#clock, +#cpu, +#memory, +#custom-clockify, +#custom-spotify, +#backlight, +#mode, +#network, +#disk, +#pulseaudio, +#workspaces, +#temperature { + padding: 0 10px; + margin: 5px 5px; + border-radius: 10em; + background-color: @backgroundlight; + color: @foreground; +} + +/* Each module that should blink */ +#mode, +#memory, +#temperature, +#battery { + animation-timing-function: ease-out; + animation-iteration-count: infinite; + animation-direction: alternate; +} + +/* Each critical module */ +#memory.critical, +#cpu.critical, +#temperature.critical, +#battery.critical { + color: @critical; +} + +/* Each critical that should blink */ +#mode, +#memory.critical, +#temperature.critical, +#battery.critical.discharging { + animation-name: blink-critical; + animation-duration: 2s; +} + +/* Each warning */ +#network.disconnected, +#memory.warning, +#cpu.warning, +#temperature.warning, +#battery.warning { + color: @warning; +} + +#cpu.low { + color: @memory; +} + +/* Each warning that should blink */ +#battery.warning.discharging { + animation-name: blink-warning; + animation-duration: 3s; +} + +#battery.low.discharging { + animation-name: blink-low; + animation-duration: 5s; +} + +/* And now modules themselves in their respective order */ + +#mode { /* Shown current Sway mode (resize etc.) */ + color: @foreground; + background: @mode; +} + +/* Workspaces stuff */ +#workspaces { + background: #2A2A2A; +} + +#workspaces button { + padding: 0; + color: #D4BE98; + font-size: 16pt; +} + +#workspaces button.persistent { + color: #3E3E3E; +} + +#workspaces button.visible { + color: #FE8019; +} + +#network { + color: @network; +} + +#disk { + color: #FABD2F; + border-radius: 10em 0 0 10em; + margin-right: 0; +} + +#memory { + color: @memory; + margin-right: 0; + margin-left: 0; + border-radius: 0; +} + +#cpu { + color: @cpu; + margin-right: 0; + margin-left: 0; + border-radius: 0; +} + +#temperature { + color: @temp; + border-radius: 0 10em 10em 0; + margin-left: 0; +} + +#pulseaudio { + color: @sound; + margin-right: 0; + border-radius: 10em 0 0 10em; +} + +#pulseaudio.muted { + color: #3E3E3E; +} + +#battery { + color: @battery; + margin-right: 0; + margin-left: 0; + border-radius: 0; +} + +#backlight { + color: #D3869B; + margin-left: 0; + border-radius: 0 10em 10em 0; +} + +#clock.date { + background: @date; + color: @foreground; + margin-right: 0; + border-radius: 10em 0 0 10em; +} + +#clock.time { + background: @time; + color: @background; + margin-left: 0; + border-radius: 0 10em 10em 0; +} + +#tray { + margin: 0 5px; +} + +tooltip { + color: @foreground; + background-color: @background; + font-weight: 400; + font-family: Fira Code; + margin: 0 10px; + border-radius: 1em; +} + +tooltip label { + color: @foreground; + padding: 0 5px; +} |
