diff --git a/dotfiles/hyprland.conf b/dotfiles/hyprland.conf
index 7c686eb..61a7805 100644
--- a/dotfiles/hyprland.conf
+++ b/dotfiles/hyprland.conf
@@ -11,8 +11,8 @@ monitor=,preferred,auto,auto
# See https://wiki.hyprland.org/Configuring/Keywords/
$terminal = kitty
-$fileManager = dolphin
-$menu = wofi --show drun
+$fileManager = thunar
+$menu = rofi -show drun
#################
### AUTOSTART ###
@@ -21,8 +21,12 @@ $menu = wofi --show drun
# exec-once = $terminal
# exec-once = nm-applet &
# exec-once = waybar & hyprpaper & firefox
-exec-once = waybar
-exec-once = swaync
+exec-once = dbus-update-activation-environment --systemd --all
+exec-once = systemctl --user import-environment QT_QPA_PLATFORMTHEME WAYLAND_DISPLAY XDG_CURRENT_DESKTOP
+exec-once = killall -q swww;sleep .5 && swww init
+exec-once = killall -q waybar;sleep .5 && waybar
+exec-once = killall -q swaync;sleep .5 && swaync
+exec-once = rainbow-border &
#############################
### ENVIRONMENT VARIABLES ###
@@ -31,6 +35,17 @@ exec-once = swaync
# See https://wiki.hyprland.org/Configuring/Environment-variables/
env = XCURSOR_SIZE,24
env = HYPRCURSOR_SIZE,24
+env = NIXOS_OZONE_WL, 1
+env = XDG_CURRENT_DESKTOP, Hyprland
+env = XDG_SESSION_TYPE, Hyprland
+env = XDG_SESSION_DESKTOP, Hyprland
+env = GDK_BACKEND, wayland, x11
+env = CLUTTER_BACKEND, wayland
+env = QT_QPA_PLATFORM=wayland;xcb
+env = QT_WAYLAND_DISABLE_WINDOWDECORATION, 1
+env = QT_AUTO_SCREEN_SCALE_FACTOR, 1
+env = SDL_VIDEODRIVER, x11
+env = MOZ_ENABLE_WAYLAND, 1
#####################
### LOOK AND FEEL ###
@@ -38,8 +53,8 @@ env = HYPRCURSOR_SIZE,24
# Refer to https://wiki.hyprland.org/Configuring/Variables/
# https://wiki.hyprland.org/Configuring/Variables/#general
general {
- gaps_in = 5
- gaps_out = 20
+ gaps_in = 6
+ gaps_out = 8
border_size = 2
# https://wiki.hyprland.org/Configuring/Variables/#variable-types for info about colors
@@ -74,7 +89,9 @@ decoration {
blur {
enabled = true
size = 3
- passes = 1
+ passes = 3
+ new_optimizations = on
+ ignore_opacity = off
vibrancy = 0.1696
}
@@ -86,30 +103,48 @@ animations {
# Default animations, see https://wiki.hyprland.org/Configuring/Animations/ for more
- bezier = easeOutQuint,0.23,1,0.32,1
- bezier = easeInOutCubic,0.65,0.05,0.36,1
- bezier = linear,0,0,1,1
- bezier = almostLinear,0.5,0.5,0.75,1.0
- bezier = quick,0.15,0,0.1,1
+ # bezier = easeOutQuint,0.23,1,0.32,1
+ # bezier = easeInOutCubic,0.65,0.05,0.36,1
+ # bezier = linear,0,0,1,1
+ # bezier = almostLinear,0.5,0.5,0.75,1.0
+ # bezier = quick,0.15,0,0.1,1
- animation = global, 1, 10, default
- animation = border, 1, 5.39, easeOutQuint
- animation = windows, 1, 4.79, easeOutQuint
- animation = windowsIn, 1, 4.1, easeOutQuint, popin 87%
- animation = windowsOut, 1, 1.49, linear, popin 87%
- animation = fadeIn, 1, 1.73, almostLinear
- animation = fadeOut, 1, 1.46, almostLinear
- animation = fade, 1, 3.03, quick
- animation = layers, 1, 3.81, easeOutQuint
- animation = layersIn, 1, 4, easeOutQuint, fade
- animation = layersOut, 1, 1.5, linear, fade
- animation = fadeLayersIn, 1, 1.79, almostLinear
- animation = fadeLayersOut, 1, 1.39, almostLinear
- animation = workspaces, 1, 1.94, almostLinear, fade
- animation = workspacesIn, 1, 1.21, almostLinear, fade
- animation = workspacesOut, 1, 1.94, almostLinear, fade
+ # animation = global, 1, 10, default
+ # animation = border, 1, 5.39, easeOutQuint
+ # animation = windows, 1, 4.79, easeOutQuint
+ # animation = windowsIn, 1, 4.1, easeOutQuint, popin 87%
+ # animation = windowsOut, 1, 1.49, linear, popin 87%
+ # animation = fadeIn, 1, 1.73, almostLinear
+ # animation = fadeOut, 1, 1.46, almostLinear
+ # animation = fade, 1, 3.03, quick
+ # animation = layers, 1, 3.81, easeOutQuint
+ # animation = layersIn, 1, 4, easeOutQuint, fade
+ # animation = layersOut, 1, 1.5, linear, fade
+ # animation = fadeLayersIn, 1, 1.79, almostLinear
+ # animation = fadeLayersOut, 1, 1.39, almostLinear
+ # animation = workspaces, 1, 1.94, almostLinear, fade
+ # animation = workspacesIn, 1, 1.21, almostLinear, fade
+ # animation = workspacesOut, 1, 1.94, almostLinear, fade
+ bezier = wind, 0.05, 0.9, 0.1, 1.05
+ bezier = winIn, 0.1, 1.1, 0.1, 1.1
+ bezier = winOut, 0.3, -0.3, 0, 1
+ bezier = liner, 1, 1, 1, 1
+ animation = windows, 1, 6, wind, slide
+ animation = windowsIn, 1, 6, winIn, slide
+ animation = windowsOut, 1, 5, winOut, slide
+ animation = windowsMove, 1, 5, wind, slide
+ animation = border, 1, 1, liner
+ animation = fade, 1, 10, default
+ animation = workspaces, 1, 5, wind
}
+plugin {
+ hyprtrails {
+
+ }
+}
+
+
# Ref https://wiki.hyprland.org/Configuring/Workspace-Rules/
# "Smart gaps" / "No gaps when only"
# uncomment all if you wish to use that.
@@ -143,15 +178,16 @@ misc {
# https://wiki.hyprland.org/Configuring/Variables/#input
input {
- kb_layout = us_intl
+ kb_layout = us,us_intl
kb_variant =
kb_model =
- kb_options =
+ kb_options = grp:win_space_toggle
kb_rules =
follow_mouse = 1
- sensitivity = 0 # -1.0 - 1.0, 0 means no modification.
+ sensitivity = 0 # -1.0 - 1.0, 0 means no modification
+ accel_profile = flat
touchpad {
natural_scroll = false
@@ -187,6 +223,12 @@ bind = $mainMod, V, togglefloating,
bind = $mainMod, R, exec, $menu
bind = $mainMod, P, pseudo, # dwindle
bind = $mainMod, J, togglesplit, # dwindle
+bind = $mainMod, L, exec, hyprlock
+
+bind = , Print, exec, "grim"
+# bind = $mainMod, Print, exec, "grim - | swappy -f -"
+# bind = SHIFT, Print, exec, "grim -g \"$(slurp)\""
+bind = $mainMod SHIFT, Print, exec, screenshot
# Move focus with mainMod + arrow keys
bind = $mainMod, left, movefocus, l
@@ -244,6 +286,9 @@ bindl = , XF86AudioPause, exec, playerctl play-pause
bindl = , XF86AudioPlay, exec, playerctl play-pause
bindl = , XF86AudioPrev, exec, playerctl previous
+bind = ALT, Tab, cyclenext
+bind = ALT, Tab, bringactivetotop
+
##############################
### WINDOWS AND WORKSPACES ###
##############################
@@ -257,6 +302,13 @@ bindl = , XF86AudioPrev, exec, playerctl previous
# Example windowrule v2
# windowrulev2 = float,class:^(kitty)$,title:^(kitty)$
+windowrule = noborder,^(wofi)$
+windowrule = center,^(wofi)$
+windowrule = center,^(steam)$
+windowrule = float, swayimg|vlc|Viewnior|pavucontrol
+windowrule = float, nwg-look|qt5ct|mpv
+windowrule = float, zoom
+
# Ignore maximize requests from apps. You'll probably like this.
windowrulev2 = suppressevent maximize, class:.*
diff --git a/flake.lock b/flake.lock
index 5051764..1c1f6a2 100644
--- a/flake.lock
+++ b/flake.lock
@@ -1,5 +1,141 @@
{
"nodes": {
+ "base16": {
+ "inputs": {
+ "fromYaml": "fromYaml"
+ },
+ "locked": {
+ "lastModified": 1732200724,
+ "narHash": "sha256-+R1BH5wHhfnycySb7Sy5KbYEaTJZWm1h+LW1OtyhiTs=",
+ "owner": "SenchoPens",
+ "repo": "base16.nix",
+ "rev": "153d52373b0fb2d343592871009a286ec8837aec",
+ "type": "github"
+ },
+ "original": {
+ "owner": "SenchoPens",
+ "repo": "base16.nix",
+ "type": "github"
+ }
+ },
+ "base16-fish": {
+ "flake": false,
+ "locked": {
+ "lastModified": 1622559957,
+ "narHash": "sha256-PebymhVYbL8trDVVXxCvZgc0S5VxI7I1Hv4RMSquTpA=",
+ "owner": "tomyun",
+ "repo": "base16-fish",
+ "rev": "2f6dd973a9075dabccd26f1cded09508180bf5fe",
+ "type": "github"
+ },
+ "original": {
+ "owner": "tomyun",
+ "repo": "base16-fish",
+ "type": "github"
+ }
+ },
+ "base16-helix": {
+ "flake": false,
+ "locked": {
+ "lastModified": 1725860795,
+ "narHash": "sha256-Z2o8VBPW3I+KKTSfe25kskz0EUj7MpUh8u355Z1nVsU=",
+ "owner": "tinted-theming",
+ "repo": "base16-helix",
+ "rev": "7f795bf75d38e0eea9fed287264067ca187b88a9",
+ "type": "github"
+ },
+ "original": {
+ "owner": "tinted-theming",
+ "repo": "base16-helix",
+ "type": "github"
+ }
+ },
+ "base16-vim": {
+ "flake": false,
+ "locked": {
+ "lastModified": 1731949548,
+ "narHash": "sha256-XIDexXM66sSh5j/x70e054BnUsviibUShW7XhbDGhYo=",
+ "owner": "tinted-theming",
+ "repo": "base16-vim",
+ "rev": "61165b1632409bd55e530f3dbdd4477f011cadc6",
+ "type": "github"
+ },
+ "original": {
+ "owner": "tinted-theming",
+ "repo": "base16-vim",
+ "type": "github"
+ }
+ },
+ "flake-compat": {
+ "flake": false,
+ "locked": {
+ "lastModified": 1696426674,
+ "narHash": "sha256-kvjfFW7WAETZlt09AgDn1MrtKzP7t90Vf7vypd3OL1U=",
+ "owner": "edolstra",
+ "repo": "flake-compat",
+ "rev": "0f9255e01c2351cc7d116c072cb317785dd33b33",
+ "type": "github"
+ },
+ "original": {
+ "owner": "edolstra",
+ "repo": "flake-compat",
+ "type": "github"
+ }
+ },
+ "flake-utils": {
+ "inputs": {
+ "systems": [
+ "stylix",
+ "systems"
+ ]
+ },
+ "locked": {
+ "lastModified": 1731533236,
+ "narHash": "sha256-l0KFg5HjrsfsO/JpG+r7fRrqm12kzFHyUHqHCVpMMbI=",
+ "owner": "numtide",
+ "repo": "flake-utils",
+ "rev": "11707dc2f618dd54ca8739b309ec4fc024de578b",
+ "type": "github"
+ },
+ "original": {
+ "owner": "numtide",
+ "repo": "flake-utils",
+ "type": "github"
+ }
+ },
+ "fromYaml": {
+ "flake": false,
+ "locked": {
+ "lastModified": 1731966426,
+ "narHash": "sha256-lq95WydhbUTWig/JpqiB7oViTcHFP8Lv41IGtayokA8=",
+ "owner": "SenchoPens",
+ "repo": "fromYaml",
+ "rev": "106af9e2f715e2d828df706c386a685698f3223b",
+ "type": "github"
+ },
+ "original": {
+ "owner": "SenchoPens",
+ "repo": "fromYaml",
+ "type": "github"
+ }
+ },
+ "gnome-shell": {
+ "flake": false,
+ "locked": {
+ "lastModified": 1732369855,
+ "narHash": "sha256-JhUWbcYPjHO3Xs3x9/Z9RuqXbcp5yhPluGjwsdE2GMg=",
+ "owner": "GNOME",
+ "repo": "gnome-shell",
+ "rev": "dadd58f630eeea41d645ee225a63f719390829dc",
+ "type": "github"
+ },
+ "original": {
+ "owner": "GNOME",
+ "ref": "47.2",
+ "repo": "gnome-shell",
+ "type": "github"
+ }
+ },
"home-manager": {
"inputs": {
"nixpkgs": [
@@ -20,6 +156,27 @@
"type": "github"
}
},
+ "home-manager_2": {
+ "inputs": {
+ "nixpkgs": [
+ "stylix",
+ "nixpkgs"
+ ]
+ },
+ "locked": {
+ "lastModified": 1733085484,
+ "narHash": "sha256-dVmNuUajnU18oHzBQWZm1BQtANCHaqNuxTHZQ+GN0r8=",
+ "owner": "nix-community",
+ "repo": "home-manager",
+ "rev": "c1fee8d4a60b89cae12b288ba9dbc608ff298163",
+ "type": "github"
+ },
+ "original": {
+ "owner": "nix-community",
+ "repo": "home-manager",
+ "type": "github"
+ }
+ },
"nixpkgs": {
"locked": {
"lastModified": 1733015953,
@@ -36,10 +193,122 @@
"type": "github"
}
},
+ "nixpkgs_2": {
+ "locked": {
+ "lastModified": 1732238832,
+ "narHash": "sha256-sQxuJm8rHY20xq6Ah+GwIUkF95tWjGRd1X8xF+Pkk38=",
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "rev": "8edf06bea5bcbee082df1b7369ff973b91618b8d",
+ "type": "github"
+ },
+ "original": {
+ "owner": "NixOS",
+ "ref": "nixpkgs-unstable",
+ "repo": "nixpkgs",
+ "type": "github"
+ }
+ },
"root": {
"inputs": {
"home-manager": "home-manager",
- "nixpkgs": "nixpkgs"
+ "nixpkgs": "nixpkgs",
+ "stylix": "stylix"
+ }
+ },
+ "stylix": {
+ "inputs": {
+ "base16": "base16",
+ "base16-fish": "base16-fish",
+ "base16-helix": "base16-helix",
+ "base16-vim": "base16-vim",
+ "flake-compat": "flake-compat",
+ "flake-utils": "flake-utils",
+ "gnome-shell": "gnome-shell",
+ "home-manager": "home-manager_2",
+ "nixpkgs": "nixpkgs_2",
+ "systems": "systems",
+ "tinted-foot": "tinted-foot",
+ "tinted-kitty": "tinted-kitty",
+ "tinted-tmux": "tinted-tmux"
+ },
+ "locked": {
+ "lastModified": 1734110168,
+ "narHash": "sha256-Q0eeLYn45ErXlqGQyXmLLHGe1mqnUiK0Y9wZRa1SNFI=",
+ "owner": "danth",
+ "repo": "stylix",
+ "rev": "a9e3779949925ef22f5a215c5f49cf520dea30b1",
+ "type": "github"
+ },
+ "original": {
+ "owner": "danth",
+ "repo": "stylix",
+ "type": "github"
+ }
+ },
+ "systems": {
+ "locked": {
+ "lastModified": 1681028828,
+ "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
+ "owner": "nix-systems",
+ "repo": "default",
+ "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
+ "type": "github"
+ },
+ "original": {
+ "owner": "nix-systems",
+ "repo": "default",
+ "type": "github"
+ }
+ },
+ "tinted-foot": {
+ "flake": false,
+ "locked": {
+ "lastModified": 1726913040,
+ "narHash": "sha256-+eDZPkw7efMNUf3/Pv0EmsidqdwNJ1TaOum6k7lngDQ=",
+ "owner": "tinted-theming",
+ "repo": "tinted-foot",
+ "rev": "fd1b924b6c45c3e4465e8a849e67ea82933fcbe4",
+ "type": "github"
+ },
+ "original": {
+ "owner": "tinted-theming",
+ "repo": "tinted-foot",
+ "rev": "fd1b924b6c45c3e4465e8a849e67ea82933fcbe4",
+ "type": "github"
+ }
+ },
+ "tinted-kitty": {
+ "flake": false,
+ "locked": {
+ "lastModified": 1716423189,
+ "narHash": "sha256-2xF3sH7UIwegn+2gKzMpFi3pk5DlIlM18+vj17Uf82U=",
+ "owner": "tinted-theming",
+ "repo": "tinted-kitty",
+ "rev": "eb39e141db14baef052893285df9f266df041ff8",
+ "type": "github"
+ },
+ "original": {
+ "owner": "tinted-theming",
+ "repo": "tinted-kitty",
+ "rev": "eb39e141db14baef052893285df9f266df041ff8",
+ "type": "github"
+ }
+ },
+ "tinted-tmux": {
+ "flake": false,
+ "locked": {
+ "lastModified": 1729501581,
+ "narHash": "sha256-1ohEFMC23elnl39kxWnjzH1l2DFWWx4DhFNNYDTYt54=",
+ "owner": "tinted-theming",
+ "repo": "tinted-tmux",
+ "rev": "f0e7f7974a6441033eb0a172a0342e96722b4f14",
+ "type": "github"
+ },
+ "original": {
+ "owner": "tinted-theming",
+ "repo": "tinted-tmux",
+ "type": "github"
}
}
},
diff --git a/flake.nix b/flake.nix
index 9659549..9934483 100644
--- a/flake.nix
+++ b/flake.nix
@@ -3,11 +3,11 @@
inputs = {
nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable";
-
home-manager = {
url = "github:nix-community/home-manager";
inputs.nixpkgs.follows = "nixpkgs";
};
+ stylix.url = "github:danth/stylix";
};
outputs = {
@@ -21,7 +21,10 @@
{
nixosConfigurations = {
home = nixpkgs.lib.nixosSystem {
- specialArgs = {inherit inputs;};
+ specialArgs = {
+ inherit system;
+ inherit inputs;
+ };
modules = [
./modules/nixos/cli-environment.nix
./modules/nixos/desktop-apps.nix
@@ -30,6 +33,7 @@
./modules/nixos/gaming.nix
./modules/nixos/window-manager.nix
./hosts/home/configuration.nix
+ inputs.stylix.nixosModules.stylix
inputs.home-manager.nixosModules.default
];
};
diff --git a/hosts/home/configuration.nix b/hosts/home/configuration.nix
index 34c35ab..60ffe77 100644
--- a/hosts/home/configuration.nix
+++ b/hosts/home/configuration.nix
@@ -8,10 +8,16 @@
];
# Bootloader.
- boot.loader.grub.enable = true;
- boot.loader.grub.device = "/dev/sda";
- boot.loader.grub.useOSProber = true;
- boot.supportedFilesystems = [ "ntfs" ];
+ boot = {
+ loader.grub.enable = true;
+ loader.grub.device = "/dev/sda";
+ loader.grub.useOSProber = true;
+ supportedFilesystems = [ "ntfs" ];
+ # tmp = {
+ # useTmpfs = false;
+ # tmpfsSize = "30%";
+ # };
+ };
fileSystems."/mnt/apps" = {
device = "/dev/disk/by-label/Apps";
@@ -32,10 +38,18 @@
};
networking.hostName = "arcueid"; # Define your hostname.
- nix.settings.experimental-features = [ "nix-command" "flakes" ];
networking.networkmanager.enable = true;
-
- hardware.logitech.lcd.enable = true;
+ nix = {
+ settings = {
+ auto-optimise-store = true;
+ experimental-features = [ "nix-command" "flakes" ];
+ };
+ gc = {
+ automatic = true;
+ dates = "weekly";
+ options = "--delete-older-than 10d";
+ };
+ };
time.timeZone = "Europe/Paris";
i18n.defaultLocale = "fr_FR.UTF-8";
@@ -52,39 +66,47 @@
LC_TIME = "fr_FR.UTF-8";
};
- services.xserver.enable = true;
- services.xserver.xkb = {
- layout = "us";
- variant = "altgr-intl";
+ hardware = {
+ sane.enable = true;
+ pulseaudio.enable = false;
+ graphics.enable = true;
};
- services.printing.enable = true;
- services.avahi = {
- enable = true;
- nssmdns4 = true;
- openFirewall = true;
- };
- # TODO Add Scanner configuration
-
- hardware.logitech.lcd.devices = [
- "c22d" "c22e"
- ];
-
- hardware.pulseaudio.enable = false;
security.rtkit.enable = true;
- services.pipewire = {
- enable = true;
- alsa.enable = true;
- alsa.support32Bit = true;
- pulse.enable = true;
+
+ services = {
+ xserver.enable = true;
+ xserver.xkb = {
+ layout = "us";
+ variant = "altgr-intl";
+ };
+ printing.enable = true;
+ avahi = {
+ enable = true;
+ nssmdns4 = true;
+ openFirewall = true;
+ };
+ pipewire = {
+ enable = true;
+ alsa.enable = true;
+ alsa.support32Bit = true;
+ pulse.enable = true;
+ };
+ # my modules
+ cli-environment.enable = true;
+ desktop-apps.enable = true;
+ dev-environment.enable = true;
+ gaming.enable = true;
+ fonts.enable = true;
+ window-manager.enable = true;
};
users.users.yoru = {
shell = pkgs.fish;
isNormalUser = true;
description = "Yoru";
- extraGroups = [ "networkmanager" "wheel" ];
+ extraGroups = [ "networkmanager" "wheel" "scanner" "lp"];
packages = with pkgs; [
-
+
];
};
home-manager = {
@@ -94,16 +116,36 @@
};
};
nixpkgs.config.allowUnfree = true;
- environment.systemPackages = with pkgs; [
- g15daemon
- ];
- services.cli-environment.enable = true;
- services.desktop-apps.enable = true;
- services.dev-environment.enable = true;
- services.gaming.enable = true;
- services.fonts.enable = true;
- services.window-manager.enable = true;
+ stylix = {
+ enable = true;
+ image = ../../wall.jpg;
+ polarity = "dark";
+ opacity.terminal = 0.9;
+ cursor.package = pkgs.bibata-cursors;
+ cursor.name = "Bibata-Modern-Ice";
+ cursor.size = 24;
+ fonts = {
+ monospace = {
+ package = pkgs.nerd-fonts.jetbrains-mono;
+ name = "JetBrainsMono Nerd Font Mono";
+ };
+ sansSerif = {
+ package = pkgs.montserrat;
+ name = "Montserrat";
+ };
+ serif = {
+ package = pkgs.montserrat;
+ name = "Montserrat";
+ };
+ sizes = {
+ applications = 12;
+ terminal = 12;
+ desktop = 11;
+ popups = 12;
+ };
+ };
+ };
system.stateVersion = "24.05";
}
diff --git a/hosts/home/home.nix b/hosts/home/home.nix
index ca9b5cb..b95ed1b 100644
--- a/hosts/home/home.nix
+++ b/hosts/home/home.nix
@@ -18,9 +18,91 @@
myHome.kitty.enable = true;
myHome.shell.enable = true;
- # TODO Move somewhere...
- # programs.spotify-player.enable = true;
+ home.file.".config/swappy/config".text = ''
+ [Default]
+ save_dir=/home/yoru/Pictures/Screenshots
+ save_filename_format=swappy-%Y%m%d-%H%M%S.png
+ show_panel=false
+ line_size=5
+ text_size=20
+ text_font=Ubuntu
+ paint_mode=brush
+ early_exit=true
+ fill_shape=false
+ '';
- programs.home-manager.enable = true;
+ home.packages = [
+ (import ../../scripts/screenshot.nix { inherit pkgs; })
+ (import ../../scripts/rainbow-border.nix { inherit pkgs; })
+ ];
+
+ # stylix.targets = {
+ # waybar.enable = false;
+ # rofi.enable = false;
+ # hyprland.enable = false;
+ # };
+
+ gtk = {
+ iconTheme = {
+ name = "Papirus-Dark";
+ package = pkgs.papirus-icon-theme;
+ };
+ gtk3.extraConfig = {
+ gtk-application-prefer-dark-theme = 1;
+ };
+ gtk4.extraConfig = {
+ gtk-application-prefer-dark-theme = 1;
+ };
+ };
+ qt = {
+ enable = true;
+ style.name = "adwaita-dark";
+ platformTheme.name = "gtk3";
+ };
+
+ services = {
+ hypridle = {
+ settings = {
+ general = {
+ after_sleep_cmd = "hyprctl dispatch dpms on";
+ ignore_dbus_inhibit = false;
+ lock_cmd = "hyprlock";
+ };
+ listener = [
+ {
+ timeout = 900;
+ on-timeout = "hyprlock";
+ }
+ {
+ timeout = 1200;
+ on-timeout = "hyprctl dispatch dpms off";
+ on-resume = "hyprctl dispatch dpms on";
+ }
+ ];
+ };
+ };
+ };
+
+ programs = {
+ gh.enable = true;
+ btop = {
+ enable = true;
+ settings = {
+ vim_keys = true;
+ };
+ };
+ home-manager.enable = true;
+ hyprlock = {
+ enable = true;
+ settings = {
+ general = {
+ disable_loading_bar = true;
+ grace = 10;
+ hide_cursor = true;
+ no_fade_in = false;
+ };
+ };
+ };
+ };
home.stateVersion = "23.11";
}
diff --git a/modules/home-manager/helix.nix b/modules/home-manager/helix.nix
index 7875e1e..71b4abc 100644
--- a/modules/home-manager/helix.nix
+++ b/modules/home-manager/helix.nix
@@ -31,7 +31,13 @@ in {
# [language-server.pylsp.config.pylsp]
# plugins.pyls_mypy.enabled = true
# plugins.pyls_mypy.live_mode = true
-
+
+# [[language]]
+# name = "rust"
+# language-servers = ["rust-analyzer"]
+
+# [language-server.rust-analyzer.config]
+# check.command = "clippy"
};
diff --git a/modules/home-manager/kitty.nix b/modules/home-manager/kitty.nix
index 767e561..0e85b53 100644
--- a/modules/home-manager/kitty.nix
+++ b/modules/home-manager/kitty.nix
@@ -26,6 +26,12 @@ in {
background_blur = 5;
font_family = "Fira Code";
};
+ extraConfig = ''
+ tab_bar_style fade
+ tab_fade 1
+ active_tab_font_style bold
+ inactive_tab_font_style bold
+ '';
};
};
}
diff --git a/modules/home-manager/shell.nix b/modules/home-manager/shell.nix
index da34710..5fe8bfa 100644
--- a/modules/home-manager/shell.nix
+++ b/modules/home-manager/shell.nix
@@ -15,8 +15,18 @@
neofetch
typst
];
+ programs.direnv = {
+ enable = true;
+ };
programs.fish = {
enable = true;
+ shellAliases = {
+ ls = "eza --icons";
+ cat = "bat";
+ ll = "eza -lh --icons --grid --group-directories-first";
+ la = "eza -lah --icons --grid --group-directories-first";
+ ".." = "cd ..";
+ };
};
};
}
diff --git a/modules/home-manager/waybar.nix b/modules/home-manager/waybar.nix
index a5e117a..edf6072 100644
--- a/modules/home-manager/waybar.nix
+++ b/modules/home-manager/waybar.nix
@@ -4,137 +4,7 @@
config,
...
}: let
- waybarConfig = {
- "layer" = "top";
- "position" = "top";
- modules-left = [
- "hyprland/workspaces"
- "custom/media"
- ];
- modules-center = [
- "hyprland/window"
- ];
- modules-right = [
- "mpd"
- "idle_inhibitor"
- "pulseaudio"
- "network"
- "power-profiles-daemon"
- "cpu"
- "memory"
- "temperature"
- # "backlight"
- "keyboard-state"
- "clock"
- "tray"
- "custom/power"
- ];
- "hyprland/workspaces" = {
- "format" = "{icon}";
- "on-scroll-up" = "hyprctl dispatch workspace e+1";
- "on-scroll-down" = "hyprctl dispatch workspace e-1";
- };
- "idle_inhibitor" = {
- "format" = "{icon}";
- "format-icons" = {
- "activated" = "";
- "deactivated" = "";
- };
- };
- "tray" = {
- "spacing" = 10;
- };
- "cpu" = {
- "format" = "{usage}% ";
- "tooltip" = false;
- };
- "memory" = {
- "format" = "{}% ";
- };
- "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" = ["" "" ""];
- };
- "network" = {
- # // "interface" = "wlp2*"; // (Optional) To force the use of this interface
- "format-wifi" = "{essid} ({signalStrength}%) ";
- "format-ethernet" = "{ipaddr}/{cidr} ";
- "tooltip-format" = "{ifname} via {gwaddr} ";
- "format-linked" = "{ifname} (No IP) ";
- "format-disconnected" = "Disconnected ⚠";
- "format-alt" = "{ifname}: {ipaddr}/{cidr}";
- };
- "pulseaudio" = {
- # // "scroll-step" = 1; // %, can be a float
- "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" = "pavucontrol";
- };
- "custom/media" = {
- "format" = "{icon} {text}";
- "return-type" = "json";
- "max-length" = 40;
- "format-icons" = {
- "spotify" = "";
- "default" = "🎜";
- };
- "escape" = true;
- "exec" = "$HOME/.config/waybar/mediaplayer.py 2> /dev/null"; # // Script in resources folder
- # // "exec": "$HOME/.config/waybar/mediaplayer.py --player spotify 2> /dev/null" // Filter player based on name
- };
- "custom/power" = {
- "format" = "⏻ ";
- "tooltip" = false;
- "menu" = "on-click";
- "menu-file" = "$HOME/.config/waybar/power_menu.xml"; # // Menu file in resources folder
- "menu-actions" = {
- "shutdown" = "shutdown";
- "reboot" = "reboot";
- "suspend" = "systemctl suspend";
- "hibernate" = "systemctl hibernate";
- };
- };
- };
-
- css = ''
- * {
- font-family: 'Fira Code', 'Symbols Nerd Font Mono';
- font-size: 16px;
- min-height: 45px;
- }
- window#waybar {
- background: transparent;
- }
- #workspaces, #clock, #pulseaudio, #network, #cpu, #memory, #backlight, #idle_inhibitor, #temperature, #custom-power {
- border-radius: 10px;
- background-color: rgba(10, 10, 10, 0.5);
- margin-top: 1px;
- padding-top: 5px;
- padding-left: 15px;
- padding-right: 10px;
- padding-bottom: 5px;
- }
- #workspaces button.active {
- color: #ebebeb;
- }
- '';
+ betterTransition = "all 0.3s cubic-bezier(.55,-0.68,.48,1.682)";
in {
options = {
myHome.waybar.enable = lib.mkEnableOption "enables waybar";
@@ -143,14 +13,265 @@ in {
config = lib.mkIf config.myHome.waybar.enable {
programs.waybar = {
enable = true;
- systemd = {
- enable = false;
- target = "graphical-session.target";
- };
- style = css;
- settings = {
- mainBar = waybarConfig;
- };
+ package = pkgs.waybar;
+ # systemd = {
+ # enable = false;
+ # target = "graphical-session.target";
+ # };
+ settings = [
+ {
+ layer = "top";
+ position = "top";
+ modules-center = [ "hyprland/workspaces" ];
+ modules-left = [
+ "custom/startmenu"
+ "hyprland/window"
+ "pulseaudio"
+ "cpu"
+ "memory"
+ "idle_inhibitor"
+ ];
+ modules-right = [
+ "custom/hyprbindings"
+ "custom/notification"
+ "custom/exit"
+ "battery"
+ "tray"
+ "clock"
+ ];
+ "hyprland/workspaces" = {
+ format = "{name}";
+ format-icons = {
+ default = " ";
+ active = " ";
+ urgent = " ";
+ };
+ on-scroll-up = "hyprctl dispatch workspace e+1";
+ on-scroll-down = "hyprctl dispatch workspace e-1";
+ };
+ "clock" = {
+ format = '' {:L%H:%M}'';
+ tooltip = true;
+ tooltip-format = "{:%A, %d.%B %Y }\n{calendar}";
+ };
+ "hyprland/window" = {
+ max-length = 22;
+ separate-outputs = false;
+ rewrite = {
+ "" = " 🙈 No Windows? ";
+ };
+ };
+ "memory" = {
+ interval = 5;
+ format = " {}%";
+ tooltip = true;
+ };
+ "cpu" = {
+ interval = 5;
+ format = " {usage:2}%";
+ tooltip = true;
+ };
+ "disk" = {
+ format = " {free}";
+ tooltip = true;
+ };
+ "network" = {
+ format-icons = [
+ ""
+ ""
+ ""
+ ""
+ ""
+ ];
+ format-ethernet = " {bandwidthDownOctets}";
+ format-wifi = "{icon} {signalStrength}%";
+ format-disconnected = "";
+ tooltip = false;
+ };
+ "tray" = {
+ spacing = 12;
+ };
+ "pulseaudio" = {
+ format = "{icon} {volume}% {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 = "sleep 0.1 && pavucontrol";
+ };
+ "custom/exit" = {
+ tooltip = false;
+ format = "";
+ on-click = "sleep 0.1 && wlogout";
+ };
+ "custom/startmenu" = {
+ tooltip = false;
+ format = "";
+ # exec = "rofi -show drun";
+ on-click = "sleep 0.1 && rofi-launcher";
+ };
+ "custom/hyprbindings" = {
+ tooltip = false;
+ format = "";
+ on-click = "sleep 0.1 && list-hypr-bindings";
+ };
+ "idle_inhibitor" = {
+ format = "{icon}";
+ format-icons = {
+ activated = "";
+ deactivated = "";
+ };
+ tooltip = "true";
+ };
+ "custom/notification" = {
+ tooltip = false;
+ format = "{icon} {}";
+ format-icons = {
+ notification = "";
+ none = "";
+ dnd-notification = "";
+ dnd-none = "";
+ inhibited-notification = "";
+ inhibited-none = "";
+ dnd-inhibited-notification = "";
+ dnd-inhibited-none = "";
+ };
+ return-type = "json";
+ exec-if = "which swaync-client";
+ exec = "swaync-client -swb";
+ on-click = "sleep 0.1 && task-waybar";
+ escape = true;
+ };
+ "battery" = {
+ states = {
+ warning = 30;
+ critical = 15;
+ };
+ format = "{icon} {capacity}%";
+ format-charging = " {capacity}%";
+ format-plugged = " {capacity}%";
+ format-icons = [
+ ""
+ ""
+ ""
+ ""
+ ""
+ ""
+ ""
+ ""
+ ""
+ ""
+ ];
+ on-click = "";
+ tooltip = false;
+ };
+ }
+ ];
+ style = ''
+ * {
+ font-family: JetBrainsMono Nerd Font Mono;
+ font-size: 16px;
+ border-radius: 0px;
+ border: none;
+ min-height: 0px;
+ }
+ window#waybar {
+ background: rgba(0,0,0,0);
+ }
+ #workspaces {
+ color: #${config.stylix.base16Scheme.base00};
+ background: #${config.stylix.base16Scheme.base01};
+ margin: 4px 4px;
+ padding: 5px 5px;
+ border-radius: 16px;
+ }
+ #workspaces button {
+ font-weight: bold;
+ padding: 0px 5px;
+ margin: 0px 3px;
+ border-radius: 16px;
+ color: #${config.stylix.base16Scheme.base00};
+ background: linear-gradient(45deg, #${config.stylix.base16Scheme.base08}, #${config.stylix.base16Scheme.base0D});
+ opacity: 0.5;
+ transition: ${betterTransition};
+ }
+ #workspaces button.active {
+ font-weight: bold;
+ padding: 0px 5px;
+ margin: 0px 3px;
+ border-radius: 16px;
+ color: #${config.stylix.base16Scheme.base00};
+ background: linear-gradient(45deg, #${config.stylix.base16Scheme.base08}, #${config.stylix.base16Scheme.base0D});
+ transition: ${betterTransition};
+ opacity: 1.0;
+ min-width: 40px;
+ }
+ #workspaces button:hover {
+ font-weight: bold;
+ border-radius: 16px;
+ color: #${config.stylix.base16Scheme.base00};
+ background: linear-gradient(45deg, #${config.stylix.base16Scheme.base08}, #${config.stylix.base16Scheme.base0D});
+ opacity: 0.8;
+ transition: ${betterTransition};
+ }
+ tooltip {
+ background: #${config.stylix.base16Scheme.base00};
+ border: 1px solid #${config.stylix.base16Scheme.base08};
+ border-radius: 12px;
+ }
+ tooltip label {
+ color: #${config.stylix.base16Scheme.base08};
+ }
+ #window, #pulseaudio, #cpu, #memory, #idle_inhibitor {
+ font-weight: bold;
+ margin: 4px 0px;
+ margin-left: 7px;
+ padding: 0px 18px;
+ background: #${config.stylix.base16Scheme.base04};
+ color: #${config.stylix.base16Scheme.base00};
+ border-radius: 24px 10px 24px 10px;
+ }
+ #custom-startmenu {
+ color: #${config.stylix.base16Scheme.base0B};
+ background: #${config.stylix.base16Scheme.base02};
+ font-size: 28px;
+ margin: 0px;
+ padding: 0px 30px 0px 15px;
+ border-radius: 0px 0px 40px 0px;
+ }
+ #custom-hyprbindings, #network, #battery,
+ #custom-notification, #tray, #custom-exit {
+ font-weight: bold;
+ background: #${config.stylix.base16Scheme.base0F};
+ color: #${config.stylix.base16Scheme.base00};
+ margin: 4px 0px;
+ margin-right: 7px;
+ border-radius: 10px 24px 10px 24px;
+ padding: 0px 18px;
+ }
+ #clock {
+ font-weight: bold;
+ color: #0D0E15;
+ background: linear-gradient(90deg, #${config.stylix.base16Scheme.base0E}, #${config.stylix.base16Scheme.base0C});
+ margin: 0px;
+ padding: 0px 15px 0px 30px;
+ border-radius: 0px 0px 0px 40px;
+ }
+ '';
};
};
}
diff --git a/modules/nixos/cli-environment.nix b/modules/nixos/cli-environment.nix
index 65ddfb0..81f49f1 100644
--- a/modules/nixos/cli-environment.nix
+++ b/modules/nixos/cli-environment.nix
@@ -12,10 +12,22 @@ in
config = mkIf cfg.enable {
environment.systemPackages = with pkgs; [
+ vim
wget
+ killall
+ htop
unzip
+ unrar
helix
+ direnv
git
+ bat
+ tree
+ imv
+ eza # ?
+ appimage-run
+ nh
+ openssl
];
programs.fish.enable = true;
};
diff --git a/modules/nixos/desktop-apps.nix b/modules/nixos/desktop-apps.nix
index 01b787d..40afd09 100644
--- a/modules/nixos/desktop-apps.nix
+++ b/modules/nixos/desktop-apps.nix
@@ -20,8 +20,20 @@ in
blender
gimp
eog
+ mpv
+ brightnessctl
+ spotify
# cura
];
- programs.firefox.enable = true;
+ programs = {
+ firefox.enable = true;
+ thunar = {
+ enable = true;
+ plugins = with pkgs.xfce; [
+ thunar-archive-plugin
+ thunar-volman
+ ];
+ };
+ };
};
}
diff --git a/modules/nixos/window-manager.nix b/modules/nixos/window-manager.nix
index 0ad3682..3e2bbe3 100644
--- a/modules/nixos/window-manager.nix
+++ b/modules/nixos/window-manager.nix
@@ -15,13 +15,36 @@ in
programs.hyprlock.enable = true;
security.pam.services.hyprlock = {};
environment.systemPackages = with pkgs; [
- wofi
+ # wofi
dolphin
waybar
pavucontrol
+ libnotify
swaynotificationcenter
wl-clipboard
hyprpaper
+ libnotify
+ hyprpicker
+ slurp
+ grim
+ swappy
+ swww
+ file-roller
+ rofi
];
+
+ xdg.portal = {
+ enable = true;
+ wlr.enable = true;
+ extraPortals = [
+ pkgs.xdg-desktop-portal-gtk
+ pkgs.xdg-desktop-portal
+ ];
+ configPackages = [
+ pkgs.xdg-desktop-portal-gtk
+ pkgs.xdg-desktop-portal-hyprland
+ pkgs.xdg-desktop-portal
+ ];
+ };
};
}
diff --git a/scripts/rainbow-border.nix b/scripts/rainbow-border.nix
new file mode 100644
index 0000000..d99d9ad
--- /dev/null
+++ b/scripts/rainbow-border.nix
@@ -0,0 +1,15 @@
+{ pkgs }:
+
+pkgs.writeShellScriptBin "rainbow-border" ''
+#!/bin/bash
+# /* ---- 💫 https://github.com/JaKooLit 💫 ---- */ ##
+# for rainbow borders animation
+
+function random_hex() {
+ random_hex=("0xff$(openssl rand -hex 3)")
+ echo $random_hex
+}
+
+# rainbow colors only for active window
+hyprctl keyword general:col.active_border $(random_hex) $(random_hex) $(random_hex) $(random_hex) $(random_hex) $(random_hex) $(random_hex) $(random_hex) $(random_hex) $(random_hex) 270deg
+''
diff --git a/scripts/screenshot.nix b/scripts/screenshot.nix
new file mode 100644
index 0000000..463ca3d
--- /dev/null
+++ b/scripts/screenshot.nix
@@ -0,0 +1,5 @@
+{ pkgs }:
+
+pkgs.writeShellScriptBin "screenshot" ''
+ grim -g "$(slurp)" - | swappy -f -
+''
diff --git a/wall.jpg b/wall.jpg
new file mode 100644
index 0000000..ffa2dc9
Binary files /dev/null and b/wall.jpg differ