overhaul hypr, waybar, add trayscale, etc

This commit is contained in:
Callum Leslie 2024-09-04 10:33:23 +01:00
parent af5a73e5df
commit 9bb638131b
Signed by: cleslie
GPG key ID: D382C4AFEECEAA90
12 changed files with 189 additions and 47 deletions

View file

@ -73,7 +73,7 @@
with mods.nixosModules; with mods.nixosModules;
utils.lib.mkFlake { utils.lib.mkFlake {
inherit self inputs; inherit self inputs;
inherit (mods) nixosModules; inherit (mods) homeManagerModules nixosModules;
inherit (hosts) hosts; inherit (hosts) hosts;
supportedSystems = ["x86_64-linux" "aarch64-linux"]; supportedSystems = ["x86_64-linux" "aarch64-linux"];
channelsConfig.allowUnfree = true; channelsConfig.allowUnfree = true;

View file

@ -7,20 +7,26 @@
imports = [./programs ./services]; imports = [./programs ./services];
programs.home-manager.enable = true; programs.home-manager.enable = true;
services.trayscale.enable = true;
home = { home = {
username = "c"; username = "c";
homeDirectory = "/home/c"; homeDirectory = "/home/c";
}; };
gtk.enable = true;
gtk.iconTheme = {
package = pkgs.gnome.adwaita-icon-theme;
name = "Adwaita";
};
home.packages = with pkgs; [ home.packages = with pkgs; [
gnome.adwaita-icon-theme
networkmanagerapplet
libsecret libsecret
bitwarden bitwarden
betterbird betterbird
wl-clipboard wl-clipboard
(discord.override { discord
withOpenASAR = true;
})
brightnessctl brightnessctl
playerctl playerctl
pwvucontrol pwvucontrol

View file

@ -4,6 +4,67 @@
pkgs, pkgs,
... ...
}: { }: {
services = {
blueman-applet.enable = true;
network-manager-applet.enable = true;
udiskie = {
enable = true;
tray = "auto";
};
};
programs.hyprlock = {
enable = true;
settings = {
background = [
{
path = "screenshot";
blur_passes = 3;
blur_size = 8;
}
];
label = [
{
monitor = "";
text = "$TIME";
text_align = "center";
color = "rgba(200, 200, 200, 1.0)";
font_size = 40;
font_family = "Noto Sans";
rotate = 0;
position = "0, 200";
halign = "center";
valign = "center";
}
{
monitor = "";
text = "Hi there, $USER";
text_align = "center";
color = "rgba(200, 200, 200, 1.0)";
font_size = 25;
font_family = "Noto Sans";
rotate = 0;
position = "0, 80";
halign = "center";
valign = "center";
}
];
input-field = [
{
size = "200, 50";
position = "0, -80";
monitor = "";
dots_center = true;
fade_on_empty = false;
font_color = "rgb(202, 211, 245)";
inner_color = "rgb(91, 96, 120)";
outer_color = "rgb(24, 25, 38)";
outline_thickness = 5;
placeholder_text = "Password...";
shadow_passes = 2;
}
];
};
};
wayland.windowManager.hyprland = { wayland.windowManager.hyprland = {
enable = true; enable = true;
systemd.enable = true; systemd.enable = true;
@ -117,18 +178,17 @@
"$mainMod SHIFT, j, movewindow, d" "$mainMod SHIFT, j, movewindow, d"
''SHIFT, Print, exec, grim -g "$(slurp)" - | wl-copy'' ''SHIFT, Print, exec, grim -g "$(slurp)" - | wl-copy''
", Print, exec, grim - | wl-copy" ", Print, exec, grim - | wl-copy"
"$mainMod, 0, exec, hyprlock"
] ]
++ (builtins.concatLists (builtins.genList (x: let ++ (builtins.concatLists (builtins.genList (x: let
ws = let c = (x + 1) / 10; in builtins.toString (x + 1 - (c * 10)); ws = x + 1;
in [ in [
"$mainMod, ${ws}, workspace, ${toString (x + 1)}" "$mainMod, ${toString ws}, workspace, ${toString ws}"
"$mainMod SHIFT, ${ws}, movetoworkspace, ${toString (x + 1)}" "$mainMod SHIFT, ${toString ws}, movetoworkspace, ${toString ws}"
"$mainMod CTRL, ${ws}, moveworkspacetomonitor, ${ "$mainMod CTRL, ${toString ws}, moveworkspacetomonitor, ${toString ws} current"
toString (x + 1) "$mainMod CTRL, ${toString ws}, workspace, ${toString ws}"
} current"
"$mainMod CTRL, ${ws}, workspace, ${toString (x + 1)}"
]) ])
10)); 9));
workspace = [ workspace = [
"name:web, on-created-empty: firefox" "name:web, on-created-empty: firefox"
@ -156,12 +216,12 @@
]; ];
exec = [ exec = [
"pkill wpaperd & sleep 0.5 && wpaperd" #"pkill wpaperd & sleep 0.5 && wpaperd"
"pkill waybar & sleep 0.5 && waybar" #"pkill waybar & sleep 0.5 && waybar"
"pkill mako & sleep 0.5 && mako" #"pkill mako & sleep 0.5 && mako"
]; ];
exec-once = ["blueman-tray" "mullvad-gui" "udiskie -t"]; exec-once = ["mullvad-gui"];
}; };
}; };
} }

View file

@ -10,7 +10,7 @@
hyprlandSupport = true; hyprlandSupport = true;
swaySupport = false; swaySupport = false;
}; };
systemd.enable = false; systemd.enable = true;
settings = { settings = {
mainBar = { mainBar = {
layer = "top"; layer = "top";
@ -58,7 +58,7 @@
tooltip = false; tooltip = false;
}; };
temperature = { temperature = {
thermal-zone = 0; thermal-zone = 5;
format = "{icon} {temperatureC}°C"; format = "{icon} {temperatureC}°C";
format-icons = [""]; format-icons = [""];
interval = 30; interval = 30;

View file

@ -31,6 +31,7 @@ in {
environment.systemPackages = with pkgs; [ environment.systemPackages = with pkgs; [
vim vim
gnome.adwaita-icon-theme
wget wget
fzf fzf
nil nil
@ -45,9 +46,9 @@ in {
shells = with pkgs; [fish]; shells = with pkgs; [fish];
etc."greetd/environments".text = '' # etc."greetd/environments".text = ''
hyprland # hyprland
''; # '';
}; };
fonts.packages = with pkgs; [nerdfonts meslo-lgs-nf]; fonts.packages = with pkgs; [nerdfonts meslo-lgs-nf];
} }

View file

@ -1,4 +1,6 @@
{inputs, ...}: { {inputs, ...}: {
programs.hyprlock.enable = true;
security.pam.services.hyprlock = {};
home-manager = { home-manager = {
sharedModules = [ sharedModules = [
{ {
@ -6,6 +8,7 @@
fish.enable = false; fish.enable = false;
}; };
} }
inputs.self.homeManagerModules.trayscale
]; ];
users.c = import ../../home; users.c = import ../../home;
extraSpecialArgs = {inherit inputs;}; extraSpecialArgs = {inherit inputs;};

View file

@ -4,8 +4,29 @@
seahorse.enable = true; seahorse.enable = true;
nix-ld.enable = true; nix-ld.enable = true;
virt-manager.enable = true; virt-manager.enable = true;
nm-applet.enable = true; #nm-applet.enable = true;
hyprland.enable = true; hyprland.enable = true;
regreet = {
enable = true;
settings = {
background = {
path = pkgs.fetchurl {
url = "https://i.redd.it/jd1nuwsl0d121.jpg";
sha256 = "sha256-ff3ajGVsay2dtHiHmO2MYlqCvexUQjGifMs/ofzuyvI=";
};
fit = "Contain";
};
GTK = {
application_prefer_dark_theme = true;
cursor_theme_name = "Adwaita";
font_name = "Cantarell 16";
icon_theme_name = "Adwaita";
theme_name = "Adwaita";
};
};
cageArgs = ["-s" "-m" "last"];
};
}; };
services = { services = {
mullvad-vpn = { mullvad-vpn = {
@ -29,17 +50,7 @@
}; };
thermald.enable = true; thermald.enable = true;
greetd = {
enable = true; greetd.enable = true;
settings = {
default_session.command = ''
${pkgs.greetd.tuigreet}/bin/tuigreet \
--time \
--asterisks \
--user-menu \
--cmd Hyprland
'';
};
};
}; };
} }

View file

@ -67,11 +67,7 @@ in {
reverse_proxy /lidarr/* 127.0.0.1:8686 reverse_proxy /lidarr/* 127.0.0.1:8686
reverse_proxy /bazarr/* 127.0.0.1:6767 reverse_proxy /bazarr/* 127.0.0.1:6767
reverse_proxy /prowlarr/* 127.0.0.1:9696 reverse_proxy /prowlarr/* 127.0.0.1:9696
reverse_proxy /tdarr/* http://127.0.0.1:8265 { reverse_proxy /tdarr/* 127.0.0.1:8265
header_up Host {host}
header_up X-Real-IP {remote}
header_up X-Forwarded-For {remote}
}
route /deluge/* { route /deluge/* {
uri strip_prefix deluge uri strip_prefix deluge
reverse_proxy 127.0.0.1:8112 { reverse_proxy 127.0.0.1:8112 {
@ -90,10 +86,6 @@ in {
}; };
}; };
homepage-dashboard = {
enable = false;
};
jellyfin = { jellyfin = {
enable = true; enable = true;
package = pkgs.jellyfin; package = pkgs.jellyfin;

View file

@ -1,7 +1,21 @@
{...}: { {...}: {
boot.loader = { boot = {
efi.canTouchEfiVariables = true; loader = {
systemd-boot.enable = true; efi.canTouchEfiVariables = true;
systemd-boot.enable = true;
};
plymouth.enable = false;
# consoleLogLevel = 0;
# initrd.verbose = false;
# kernelParams = [
# "quiet"
# "splash"
# "boot.shell_on_fail"
# "loglevel=3"
# "rd.systemd.show_status=false"
# "rd.udev.log_level=3"
# "udev.log_priority=3"
# ];
}; };
system.stateVersion = "24.05"; system.stateVersion = "24.05";
} }

View file

@ -1,6 +1,7 @@
{utils}: let {utils}: let
nixosModules = utils.lib.exportModules [ nixosModules = utils.lib.exportModules [
./nix.nix ./nix.nix
./pinentry-fix.nix
./hm.nix ./hm.nix
./boot.nix ./boot.nix
./deploy.nix ./deploy.nix
@ -8,7 +9,11 @@
./secret.nix ./secret.nix
./tailscale.nix ./tailscale.nix
]; ];
homeManagerModules = utils.lib.exportModules [
./trayscale.nix
];
sharedModules = with nixosModules; [ sharedModules = with nixosModules; [
pinentry-fix
nix nix
hm hm
boot boot
@ -16,4 +21,6 @@
tailscale tailscale
secret secret
]; ];
in {inherit nixosModules sharedModules;} in {
inherit nixosModules homeManagerModules sharedModules;
}

8
modules/pinentry-fix.nix Normal file
View file

@ -0,0 +1,8 @@
{
config,
pkgs,
lib,
...
}: {
services.dbus.packages = [pkgs.gcr];
}

40
modules/trayscale.nix Normal file
View file

@ -0,0 +1,40 @@
{
config,
lib,
pkgs,
...
}:
with lib; let
cfg = config.services.trayscale;
in {
options.services.trayscale = {
enable =
mkEnableOption
"An unofficial GUI wrapper around the Tailscale CLI client.";
package = mkPackageOption pkgs "trayscale" {};
hideWindow = mkOption {
description = "Whether to hide the trayscale window on startup.";
type = types.bool;
default = true;
};
};
config = mkIf cfg.enable {
assertions = [
(hm.assertions.assertPlatform "services.trayscale" pkgs platforms.linux)
];
systemd.user.services.trayscale = {
Unit = {
Description = "An unofficial GUI wrapper around the Tailscale CLI client";
Requires = ["tray.target"];
After = ["graphical-session-pre.target" "tray.target"];
PartOf = ["graphical-session.target"];
};
Install = {WantedBy = ["graphical-session.target"];};
Service.ExecStart =
toString (["${cfg.package}/bin/trayscale"]
++ optional cfg.hideWindow "--hide-window");
};
};
}