hyprland stuff

This commit is contained in:
mjallen18
2024-08-15 15:28:18 -05:00
parent 9410b323bf
commit d86a1d34c1
38 changed files with 1752 additions and 307 deletions

90
flake.lock generated
View File

@@ -53,11 +53,11 @@
"yafas": "yafas" "yafas": "yafas"
}, },
"locked": { "locked": {
"lastModified": 1723131830, "lastModified": 1723531925,
"narHash": "sha256-H9Q2y1RJ1ixXvyK6clZ84QXHhLvGzMPOPyBg30sqhmE=", "narHash": "sha256-QPETOkVNZwm3Zx0FRfkrPWScbc46I5QwIOdBmByYtKg=",
"owner": "chaotic-cx", "owner": "chaotic-cx",
"repo": "nyx", "repo": "nyx",
"rev": "c662fc42ab949b183c166d49efc7823509b20c75", "rev": "b8b1c616f8b869af7bce3179ad423e3d45b0d079",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -89,11 +89,11 @@
"rust-overlay": "rust-overlay" "rust-overlay": "rust-overlay"
}, },
"locked": { "locked": {
"lastModified": 1723080973, "lastModified": 1723685697,
"narHash": "sha256-p7kQ4yxruANLz0FLnqYdSvqyYGwBaT9nWs2J/nrVKA4=", "narHash": "sha256-Fp0MmV8FWrWFzYkLzPhkrc7Lj3NhMThCceDiETqEp9k=",
"owner": "lilyinstarlight", "owner": "lilyinstarlight",
"repo": "nixos-cosmic", "repo": "nixos-cosmic",
"rev": "d8b2b9aee034c10ca67848653171f576f87434a8", "rev": "4e1950ec1b6ff25a0f20ff590bf22a3065b62022",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -173,11 +173,11 @@
"rust-analyzer-src": "rust-analyzer-src" "rust-analyzer-src": "rust-analyzer-src"
}, },
"locked": { "locked": {
"lastModified": 1723098624, "lastModified": 1723444276,
"narHash": "sha256-TFg+lq7pHgCnsB4nRmMeTxSnZXHvzYJ2IHyEiw8zEF8=", "narHash": "sha256-ErWXmB84hedrDmeaHOaFFfNShC21AopTfM4x4rlvk3c=",
"owner": "nix-community", "owner": "nix-community",
"repo": "fenix", "repo": "fenix",
"rev": "d6022ac563f2f48d8eeff89ca3589c8adc5235f6", "rev": "70c22198ab822aa93c92a7ec0933908b17131edd",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -368,11 +368,11 @@
] ]
}, },
"locked": { "locked": {
"lastModified": 1723015306, "lastModified": 1723399884,
"narHash": "sha256-jQnFEtH20/OsDPpx71ntZzGdRlpXhUENSQCGTjn//NA=", "narHash": "sha256-97wn0ihhGqfMb8WcUgzzkM/TuAxce2Gd20A8oiruju4=",
"owner": "nix-community", "owner": "nix-community",
"repo": "home-manager", "repo": "home-manager",
"rev": "b3d5ea65d88d67d4ec578ed11d4d2d51e3de525e", "rev": "086f619dd991a4d355c07837448244029fc2d9ab",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -409,11 +409,11 @@
] ]
}, },
"locked": { "locked": {
"lastModified": 1723015306, "lastModified": 1723399884,
"narHash": "sha256-jQnFEtH20/OsDPpx71ntZzGdRlpXhUENSQCGTjn//NA=", "narHash": "sha256-97wn0ihhGqfMb8WcUgzzkM/TuAxce2Gd20A8oiruju4=",
"owner": "nix-community", "owner": "nix-community",
"repo": "home-manager", "repo": "home-manager",
"rev": "b3d5ea65d88d67d4ec578ed11d4d2d51e3de525e", "rev": "086f619dd991a4d355c07837448244029fc2d9ab",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -446,11 +446,11 @@
] ]
}, },
"locked": { "locked": {
"lastModified": 1723016361, "lastModified": 1723367191,
"narHash": "sha256-iEVCAOn7WUdJGrK2EW5hkfl4gBmYl5gVck+MSn6ba44=", "narHash": "sha256-noi5tre7BLtxImN38jEHeVOtOG1Xu37sJFwHKSAPHjo=",
"owner": "Jovian-Experiments", "owner": "Jovian-Experiments",
"repo": "Jovian-NixOS", "repo": "Jovian-NixOS",
"rev": "fc3d12deef508a73c7beef4cd9bebe03acde4ed7", "rev": "91178062f365b64eece94c5dff93e09b07e87d9d",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -659,11 +659,11 @@
}, },
"nixos-hardware": { "nixos-hardware": {
"locked": { "locked": {
"lastModified": 1722332872, "lastModified": 1723310128,
"narHash": "sha256-2xLM4sc5QBfi0U/AANJAW21Bj4ZX479MHPMPkB+eKBU=", "narHash": "sha256-IiH8jG6PpR4h9TxSGMYh+2/gQiJW9MwehFvheSb5rPc=",
"owner": "NixOS", "owner": "NixOS",
"repo": "nixos-hardware", "repo": "nixos-hardware",
"rev": "14c333162ba53c02853add87a0000cbd7aa230c2", "rev": "c54cf53e022b0b3c1d3b8207aa0f9b194c24f0cf",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -703,11 +703,11 @@
}, },
"nixpkgs-stable": { "nixpkgs-stable": {
"locked": { "locked": {
"lastModified": 1722869614, "lastModified": 1723556749,
"narHash": "sha256-7ojM1KSk3mzutD7SkrdSflHXEujPvW1u7QuqWoTLXQU=", "narHash": "sha256-+CHVZnTnIYRLYsARInHYoWkujzcRkLY/gXm3s5bE52o=",
"owner": "NixOS", "owner": "NixOS",
"repo": "nixpkgs", "repo": "nixpkgs",
"rev": "883180e6550c1723395a3a342f830bfc5c371f6b", "rev": "4a92571f9207810b559c9eac203d1f4d79830073",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -735,11 +735,11 @@
}, },
"nixpkgs-stable_3": { "nixpkgs-stable_3": {
"locked": { "locked": {
"lastModified": 1722869614, "lastModified": 1723556749,
"narHash": "sha256-7ojM1KSk3mzutD7SkrdSflHXEujPvW1u7QuqWoTLXQU=", "narHash": "sha256-+CHVZnTnIYRLYsARInHYoWkujzcRkLY/gXm3s5bE52o=",
"owner": "NixOS", "owner": "NixOS",
"repo": "nixpkgs", "repo": "nixpkgs",
"rev": "883180e6550c1723395a3a342f830bfc5c371f6b", "rev": "4a92571f9207810b559c9eac203d1f4d79830073",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -767,11 +767,11 @@
}, },
"nixpkgs-unstable": { "nixpkgs-unstable": {
"locked": { "locked": {
"lastModified": 1722813957, "lastModified": 1723637854,
"narHash": "sha256-IAoYyYnED7P8zrBFMnmp7ydaJfwTnwcnqxUElC1I26Y=", "narHash": "sha256-med8+5DSWa2UnOqtdICndjDAEjxr5D7zaIiK4pn0Q7c=",
"owner": "NixOS", "owner": "NixOS",
"repo": "nixpkgs", "repo": "nixpkgs",
"rev": "cb9a96f23c491c081b38eab96d22fa958043c9fa", "rev": "c3aa7b8938b17aebd2deecf7be0636000d62a2b9",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -783,11 +783,11 @@
}, },
"nixpkgs_2": { "nixpkgs_2": {
"locked": { "locked": {
"lastModified": 1722813957, "lastModified": 1723362943,
"narHash": "sha256-IAoYyYnED7P8zrBFMnmp7ydaJfwTnwcnqxUElC1I26Y=", "narHash": "sha256-dFZRVSgmJkyM0bkPpaYRtG/kRMRTorUIDj8BxoOt1T4=",
"owner": "NixOS", "owner": "NixOS",
"repo": "nixpkgs", "repo": "nixpkgs",
"rev": "cb9a96f23c491c081b38eab96d22fa958043c9fa", "rev": "a58bc8ad779655e790115244571758e8de055e3d",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -799,11 +799,11 @@
}, },
"nixpkgs_3": { "nixpkgs_3": {
"locked": { "locked": {
"lastModified": 1722813957, "lastModified": 1723362943,
"narHash": "sha256-IAoYyYnED7P8zrBFMnmp7ydaJfwTnwcnqxUElC1I26Y=", "narHash": "sha256-dFZRVSgmJkyM0bkPpaYRtG/kRMRTorUIDj8BxoOt1T4=",
"owner": "NixOS", "owner": "NixOS",
"repo": "nixpkgs", "repo": "nixpkgs",
"rev": "cb9a96f23c491c081b38eab96d22fa958043c9fa", "rev": "a58bc8ad779655e790115244571758e8de055e3d",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -1035,11 +1035,11 @@
"rust-analyzer-src": { "rust-analyzer-src": {
"flake": false, "flake": false,
"locked": { "locked": {
"lastModified": 1723042912, "lastModified": 1723304838,
"narHash": "sha256-Ff4nCgmlSWVOMvRVVf6gTYgmZjGw9EjIFHG0aUFg+D8=", "narHash": "sha256-xAxVDxuvCs8WWkrxVWjCiqxTkHhGj7sSppr1YMuEdT8=",
"owner": "rust-lang", "owner": "rust-lang",
"repo": "rust-analyzer", "repo": "rust-analyzer",
"rev": "935883fd826c46e7e7e6de19cf24377c21f1b2ba", "rev": "0daeb5c0b05cfdf2101b0f078c27539099bf38e6",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -1057,11 +1057,11 @@
] ]
}, },
"locked": { "locked": {
"lastModified": 1722997267, "lastModified": 1723602049,
"narHash": "sha256-8Pncp8IKd0f0N711CRrCGTC4iLfBE+/5kaMqyWxnYic=", "narHash": "sha256-Z/noCSn9WPkv7O77dWKLcBxe4Ub4bWyNzsL5JhjaQfw=",
"owner": "oxalica", "owner": "oxalica",
"repo": "rust-overlay", "repo": "rust-overlay",
"rev": "d720bf3cebac38c2426d77ee2e59943012854cb8", "rev": "ea0bf33a11a26a62c60123c49d96011da396602c",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -1157,11 +1157,11 @@
"nixpkgs-stable": "nixpkgs-stable_4" "nixpkgs-stable": "nixpkgs-stable_4"
}, },
"locked": { "locked": {
"lastModified": 1722897572, "lastModified": 1723501126,
"narHash": "sha256-3m/iyyjCdRBF8xyehf59QlckIcmShyTesymSb+N4Ap4=", "narHash": "sha256-N9IcHgj/p1+2Pvk8P4Zc1bfrMwld5PcosVA0nL6IGdE=",
"owner": "Mic92", "owner": "Mic92",
"repo": "sops-nix", "repo": "sops-nix",
"rev": "8ae477955dfd9cbf5fa4eb82a8db8ddbb94e79d9", "rev": "be0eec2d27563590194a9206f551a6f73d52fa34",
"type": "github" "type": "github"
}, },
"original": { "original": {

View File

@@ -86,6 +86,14 @@
home-manager.useGlobalPkgs = true; home-manager.useGlobalPkgs = true;
home-manager.useUserPackages = true; home-manager.useUserPackages = true;
home-manager.users.matt = import ./hosts/desktop/home.nix; home-manager.users.matt = import ./hosts/desktop/home.nix;
home-manager.backupFileExtension = "bakup";
specialisation.hyprland.configuration = {
home-manager.users.matt = {
home.sessionVariables = {
DUMBTEST="yaaaaaaas";
};
};
};
} }
nixos-hardware.nixosModules.common-cpu-amd nixos-hardware.nixosModules.common-cpu-amd

View File

@@ -17,10 +17,13 @@ in
# Enable nix flakes and nix-command tools # Enable nix flakes and nix-command tools
nix = { nix = {
settings.experimental-features = [ settings = {
"nix-command" warn-dirty = false;
"flakes" experimental-features = [
]; "nix-command"
"flakes"
];
};
# Garbage collect automatically every week # Garbage collect automatically every week
gc.automatic = lib.mkDefault true; gc.automatic = lib.mkDefault true;

View File

@@ -11,7 +11,7 @@
}: }:
let let
user = "matt"; user = "matt";
password = "$y$j9T$EkPXmsmIMFFZ.WRrBYCxS1$P0kwo6e4.WM5DsqUcEqWC3MrZp5KfCjxffraMFZWu06"; passwordFile = config.sops.secrets."desktop/matt_password".path;
hostname = "matt-nixos"; hostname = "matt-nixos";
resetNetworkScript = pkgs.writeScriptBin "reset-network" '' resetNetworkScript = pkgs.writeScriptBin "reset-network" ''
@@ -33,47 +33,15 @@ in
./hardware-configuration.nix ./hardware-configuration.nix
./boot.nix ./boot.nix
./filesystems.nix ./filesystems.nix
# ../../cachix/cachix.nix ./sops.nix
../default.nix ../default.nix
./hyprland
./gnome
]; ];
specialisation = { specialisation = {
gnome.configuration = {
services = {
xserver = {
desktopManager.gnome.enable = true;
# Enable Desktop Environment.
displayManager = {
gdm.enable = true;
gdm.wayland = true;
};
};
displayManager.defaultSession = "gnome";
# Enable Flatpak
flatpak.enable = true;
# disable plasma
displayManager.sddm.enable = false;
desktopManager.plasma6.enable = false;
};
environment = {
systemPackages = with pkgs; [
gnome-tweaks
gnomeExtensions.appindicator
gnomeExtensions.arcmenu
gnomeExtensions.dash-to-panel
gnomeExtensions.tiling-assistant
];
};
# xdg.portal.extraPortals = [ pkgs.xdg-desktop-portal-gtk ];
};
cosmic.configuration = { cosmic.configuration = {
services = { services = {
desktopManager.cosmic.enable = true; desktopManager.cosmic.enable = true;
@@ -84,67 +52,6 @@ in
desktopManager.plasma6.enable = false; desktopManager.plasma6.enable = false;
}; };
}; };
hyprland.configuration = {
services = {
displayManager.sddm.enable = true;
displayManager.defaultSession = "hyprland";
# disable plasma
desktopManager.plasma6.enable = false;
};
programs.hyprland = {
enable = true;
xwayland.enable = true;
};
# Hint Electon apps to use wayland
environment.sessionVariables = {
NIXOS_OZONE_WL = "1";
};
environment.systemPackages = with pkgs; [
hyprland
swww # for wallpapers
xdg-desktop-portal-gtk
xdg-desktop-portal-hyprland
xwayland
meson
wayland-protocols
wayland-utils
wl-clipboard
wlroots
networkmanagerapplet
kitty
rofi-wayland
wofi
dunst
libnotify
waybar
];
services.dbus.enable = true;
xdg.portal = {
enable = true;
wlr.enable = true;
extraPortals = [
pkgs.xdg-desktop-portal-gtk
];
};
fonts.fonts = with pkgs; [
nerdfonts
meslo-lgs-nf
];
nixpkgs.overlays = [
(self: super: {
waybar = super.waybar.overrideAttrs (oldAttrs: {
mesonFlags = oldAttrs.mesonFlags ++ [ "-Dexperimental=true" ];
});
})
];
};
}; };
apps.discover-wrapped.enable = false; apps.discover-wrapped.enable = false;
@@ -295,6 +202,8 @@ in
nil nil
papirus-icon-theme papirus-icon-theme
pciutils pciutils
# python3
# python3Packages.requests
rclone rclone
rclone-browser rclone-browser
rsync rsync
@@ -311,6 +220,7 @@ in
sessionVariables = { sessionVariables = {
STEAM_FORCE_DESKTOPUI_SCALING = "1"; STEAM_FORCE_DESKTOPUI_SCALING = "1";
}; };
}; };
# Configure nixpkgs # Configure nixpkgs
@@ -327,6 +237,7 @@ in
"ratbagd" "ratbagd"
"input" "input"
]; # Enable sudo for the user. ]; # Enable sudo for the user.
hashedPasswordFile = passwordFile;
shell = pkgs.zsh; shell = pkgs.zsh;
}; };

View File

@@ -0,0 +1,40 @@
{ pkgs, ... }:
{
specialisation.gnome.configuration = {
home-manager.users.matt = import ./home.nix;
services = {
xserver = {
desktopManager.gnome.enable = true;
# Enable Desktop Environment.
displayManager = {
gdm.enable = true;
gdm.wayland = true;
};
};
displayManager.defaultSession = "gnome";
# Enable Flatpak
flatpak.enable = true;
# disable plasma
displayManager.sddm.enable = false;
desktopManager.plasma6.enable = false;
};
environment = {
systemPackages = with pkgs; [
gnome-tweaks
gnomeExtensions.appindicator
gnomeExtensions.arcmenu
gnomeExtensions.dash-to-panel
gnomeExtensions.tiling-assistant
];
};
# xdg.portal.extraPortals = [ pkgs.xdg-desktop-portal-gtk ];
};
}

View File

@@ -0,0 +1,32 @@
{ lib, ... }:
{
dconf = {
enable = true;
settings = {
"org/gnome/desktop/interface".clock-format = "12h";
"org/gnome/desktop/interface".color-scheme = "prefer-dark";
"org/gnome/desktop/interface".enable-hot-corners = false;
"org/gnome/desktop/interface".font-antialiasing = "grayscale";
"org/gnome/desktop/interface".font-hinting = "slight";
"org/gnome/desktop/interface".icon-theme = lib.mkDefault "Papirus-Dark";
"org/gnome/desktop/peripherals/mouse".accel-profile = "flat";
"org/gnome/desktop/peripherals/touchpad".two-finger-scrolling-enabled = true;
"org/gnome/desktop/peripherals/touchpad".tap-to-click = true;
"org/gnome/mutter".experimental-features = [
"scale-monitor-framebuffer"
"variable-refresh-rate"
];
"org/gnome/tweaks".show-extensions-notice = false;
"org/gnome/shell".enabled-extensions = [
"appindicatorsupport@rgcjonas.gmail.com"
"arcmenu@arcmenu.com"
"user-theme@gnome-shell-extensions.gcampax.github.com"
"dash-to-panel@jderose9.github.com"
"tiling-assistant@leleat-on-github"
];
"org/gnome/shell/extensions/dash-to-panel".primary-monitor = 1;
"org/gnome/shell/extensions/dash-to-panel".multi-monitors = false;
"org/gtk/settings/file-chooser".clock-format = "12h";
};
};
}

View File

@@ -1,4 +1,25 @@
{ pkgs, ... }: { pkgs, lib, ... }:
let
shellAliases = {
ll = "ls -alh";
update = "sudo nixos-rebuild switch --max-jobs 10";
update-flake = "sudo nix flake update ~/nix-config";
update-specialisation = "sudo nixos-rebuild switch --specialisation --max-jobs 10";
nas-update = "nixos-rebuild switch --use-remote-sudo --target-host admin@10.0.1.18 --build-host localhost --flake ~/nix-config#jallen-nas";
nas-ssh = "ssh admin@10.0.1.18";
};
gitAliases = {
co = "checkout";
ci = "commit";
cia = "commit --amend";
s = "status";
st = "status";
b = "branch";
# p = "pull --rebase";
pu = "push";
};
in
{ {
home.username = "matt"; home.username = "matt";
@@ -17,14 +38,7 @@
autosuggestion.enable = true; autosuggestion.enable = true;
syntaxHighlighting.enable = true; syntaxHighlighting.enable = true;
shellAliases = { shellAliases = shellAliases;
ll = "ls -alh";
update = "sudo nixos-rebuild switch --max-jobs 10";
update-flake = "sudo nix flake update ~/nix-config";
update-specialisation = "sudo nixos-rebuild switch --specialisation --max-jobs 10";
nas-update = "nixos-rebuild switch --use-remote-sudo --target-host admin@jallen-nas.local --build-host localhost --flake ~/nix-config#jallen-nas";
nas-ssh = "ssh admin@jallen-nas.local";
};
oh-my-zsh = { oh-my-zsh = {
enable = true; enable = true;
@@ -38,16 +52,7 @@
enable = true; enable = true;
userName = "mjallen18"; userName = "mjallen18";
userEmail = "matt.l.jallen@gmail.com"; userEmail = "matt.l.jallen@gmail.com";
aliases = { aliases = gitAliases;
co = "checkout";
ci = "commit";
cia = "commit --amend";
s = "status";
st = "status";
b = "branch";
# p = "pull --rebase";
pu = "push";
};
}; };
programs.command-not-found.enable = true; programs.command-not-found.enable = true;
@@ -100,65 +105,4 @@
vorta vorta
vscode vscode
]; ];
specialisation.gnome.configuration = {
dconf = {
enable = true;
settings = {
"org/gnome/desktop/interface".clock-format = "12h";
"org/gnome/desktop/interface".color-scheme = "prefer-dark";
"org/gnome/desktop/interface".enable-hot-corners = false;
"org/gnome/desktop/interface".font-antialiasing = "grayscale";
"org/gnome/desktop/interface".font-hinting = "slight";
"org/gnome/desktop/interface".icon-theme = "Papirus-Dark";
"org/gnome/desktop/peripherals/mouse".accel-profile = "flat";
"org/gnome/desktop/peripherals/touchpad".two-finger-scrolling-enabled = true;
"org/gnome/desktop/peripherals/touchpad".tap-to-click = true;
"org/gnome/mutter".experimental-features = [
"scale-monitor-framebuffer"
"variable-refresh-rate"
];
"org/gnome/tweaks".show-extensions-notice = false;
"org/gnome/shell".enabled-extensions = [
"appindicatorsupport@rgcjonas.gmail.com"
"arcmenu@arcmenu.com"
"user-theme@gnome-shell-extensions.gcampax.github.com"
"dash-to-panel@jderose9.github.com"
"tiling-assistant@leleat-on-github"
];
"org/gnome/shell/extensions/dash-to-panel".primary-monitor = 1;
"org/gnome/shell/extensions/dash-to-panel".multi-monitors = false;
"org/gtk/settings/file-chooser".clock-format = "12h";
};
};
};
specialisation.hyprland.configuration = {
wayland.windowManager.hyprland.enable = true;
wayland.windowManager.hyprland.settings = {
"$mod" = "SUPER";
bind =
[
"$mod, F, exec, firefox"
", Print, exec, grimblast copy area"
]
++ (
# workspaces
# binds $mod + [shift +] {1..10} to [move to] workspace {1..10}
builtins.concatLists (builtins.genList (
x: let
ws = let
c = (x + 1) / 10;
in
builtins.toString (x + 1 - (c * 10));
in [
"$mod, ${ws}, workspace, ${toString (x + 1)}"
"$mod SHIFT, ${ws}, movetoworkspace, ${toString (x + 1)}"
]
)
10)
);
};
};
} }

View File

@@ -0,0 +1,11 @@
let configDir = ./config;
in
{
home.file = {
".config/wallpapers".source = "${configDir}/wallpapers";
".config/kitty/macchiato.conf".source = "${configDir}/kitty/macchiato.conf";
".config/wlogout".source = "${configDir}/wlogout"; #
".config/waybar/scripts".source = "${configDir}/waybar/scripts";
".config/btop/themes/catppuccin_macchiato.theme".source = "${configDir}/btop/themes/catppuccin_macchiato.theme";
};
}

View File

@@ -0,0 +1,71 @@
{
programs.btop = {
enable = true;
settings = {
color_theme = "~/.config/btop/themes/catppuccin_macchiato.theme";
theme_background = true;
truecolor = true;
force_tty = false;
presets = "cpu:1:default,proc:0:default cpu:0:default,mem:0:default,net:0:default cpu:0:block,net:0:tty";
vim_keys = true;
rounded_corners = true;
graph_symbol = "braille";
graph_symbol_cpu = "default";
graph_symbol_mem = "default";
graph_symbol_net = "default";
graph_symbol_proc = "default";
shown_boxes = "cpu mem net proc";
update_ms = 2000;
proc_sorting = "cpu lazy";
proc_reversed = false;
proc_tree = false;
proc_colors = true;
proc_gradient = true;
proc_per_core = false;
proc_mem_bytes = true;
proc_cpu_graphs = true;
proc_info_smaps = false;
proc_left = false;
proc_filter_kernel = false;
cpu_graph_upper = "total";
cpu_graph_lower = "total";
cpu_invert_lower = true;
cpu_single_graph = false;
cpu_bottom = false;
show_uptime = true;
check_temp = true;
cpu_sensor = "Auto";
show_coretemp = true;
cpu_core_map = "";
temp_scale = "celsius";
base_10_sizes = false;
show_cpu_freq = true;
clock_format = "%X";
background_update = true;
custom_cpu_name = "";
disks_filter = "";
mem_graphs = true;
mem_below_net = false;
zfs_arc_cached = true;
show_swap = true;
swap_disk = true;
show_disks = true;
only_physical = true;
use_fstab = true;
zfs_hide_datasets = false;
disk_free_priv = false;
show_io_stat = true;
io_mode = false;
io_graph_combined = false;
io_graph_speeds = "";
net_download = 100;
net_upload = 100;
net_auto = true;
net_sync = true;
net_iface = "";
show_battery = true;
selected_battery = "Auto";
log_level = "WARNING";
};
};
}

View File

@@ -0,0 +1,42 @@
theme[main_bg]="#24273A"
theme[main_fg]="#CAD3F5"
theme[title]="#CAD3F5"
theme[hi_fg]="#8AADF4"
theme[selected_bg]="#494D64"
theme[selected_fg]="#8AADF4"
theme[inactive_fg]="#8087A2"
theme[graph_text]="#F4DBD6"
theme[meter_bg]="#494D64"
theme[proc_misc]="#F4DBD6"
theme[cpu_box]="#7DC4E4"
theme[mem_box]="#A6DA95"
theme[net_box]="#C6A0F6"
theme[proc_box]="#F0C6C6"
theme[div_line]="#6E738D"
theme[temp_start]="#EED49F"
theme[temp_mid]="#F5A97F"
theme[temp_end]="#ED8796"
theme[cpu_start]="#7DC4E4"
theme[cpu_mid]="#91D7E3"
theme[cpu_end]="#8BD5CA"
theme[free_start]="#8BD5CA"
theme[free_mid]="#8BD5CA"
theme[free_end]="#A6DA95"
theme[cached_start]="#F5BDE6"
theme[cached_mid]="#F5BDE6"
theme[cached_end]="#C6A0F6"
theme[available_start]="#F4DBD6"
theme[available_mid]="#F0C6C6"
theme[available_end]="#F0C6C6"
theme[used_start]="#F5A97F"
theme[used_mid]="#F5A97F"
theme[used_end]="#ED8796"
theme[download_start]="#B7BDF8"
theme[download_mid]="#B7BDF8"
theme[download_end]="#C6A0F6"
theme[upload_start]="#B7BDF8"
theme[upload_mid]="#B7BDF8"
theme[upload_end]="#C6A0F6"
theme[process_start]="#7DC4E4"
theme[process_mid]="#91D7E3"
theme[process_end]="#8BD5CA"

View File

@@ -0,0 +1,216 @@
{
wayland.windowManager.hyprland = {
enable = true;
xwayland.enable = true;
systemd.enable = true;
settings = {
"$mainMod" = "SUPER";
# l -> locked, will also work when an input inhibitor (e.g. a lockscreen) is active.
# r -> release, will trigger on release of a key.
# e -> repeat, will repeat when held.
# n -> non-consuming, key/mouse events will be passed to the active window in addition to triggering the dispatcher.
# m -> mouse, see below.
# t -> transparent, cannot be shadowed by other binds.
# i -> ignore mods, will ignore modifiers.
# s -> separate, will arbitrarily combine keys between each mod/key, see [Keysym combos](#keysym-combos) above.
# d -> has description, will allow you to write a description for your bind.
# p -> bypasses the app's requests to inhibit keybinds.
bind = [
"$mainMod, Return, exec, kitty"
"$mainMod, Q, killactive, "
"$mainMod, M, exec, wlogout --protocol layer-shell"
"$mainMod, E, exec, nautilus"
"$mainMod, V, togglefloating, "
"$mainMod, D, exec, wofi --show drun"
"$mainMod, P, pseudo, "# dwindle
"$mainMod, S, togglesplit, "# dwindle
"$mainMod SHIFT, Q, exec, hyprlock"
", PRINT, exec, hyprshot -m region --clipboard-only"
"$mainMod, h, movefocus, l"
"$mainMod, l, movefocus, r"
"$mainMod, k, movefocus, u"
"$mainMod, j, movefocus, d"
"$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"
"$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"
"$mainMod CTRL, l, resizeactive, 10 0"
"$mainMod CTRL, h, resizeactive, -10 0"
"$mainMod CTRL, k, resizeactive, 0 -10"
"$mainMod CTRL, j, resizeactive, 0 10"
"$mainMod SHIFT, l, movewindow, r"
"$mainMod SHIFT, h, movewindow, l"
"$mainMod SHIFT, k, movewindow, u"
"$mainMod SHIFT, j, movewindow, d"
"$mainMod, b, exec, firefox"
];
bindm = [
# Move/resize windows with mainMod + LMB/RMB and dragging
"$mainMod, mouse:272, movewindow"
"$mainMod, mouse:273, resizewindow"
];
bindel =[
", XF86AudioRaiseVolume, exec, wpctl set-volume -l 1.5 @DEFAULT_AUDIO_SINK@ 5%+"
", XF86AudioLowerVolume, exec, wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%-"
];
bindl = [
", XF86AudioMute, exec, wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle"
", XF86AudioPlay, exec, playerctl play-pause"
", XF86AudioPrev, exec, playerctl previous"
", XF86AudioNext, exec, playerctl next"
];
monitor = [
"DP-1,3840x2160@240.00000,0x0,1"
"DP-2,3840x2160@59.99700,3840x0,1"
];
general = {
gaps_in = 5;
gaps_out = 10;
border_size = 1;
"col.active_border" = "rgb(8aadf4) rgb(24273A) rgb(24273A) rgb(8aadf4) 45deg";
"col.inactive_border" = "rgb(24273A) rgb(24273A) rgb(24273A) rgb(24273A) 45deg";
layout = "dwindle";
allow_tearing = false;
};
decoration = {
rounding = 10;
blur = {
enabled = true;
size = 2;
passes = 2;
new_optimizations = true;
xray = false;
};
drop_shadow = "yes";
shadow_range = 4;
shadow_render_power = "3";
"col.shadow" = "rgba(1a1a1aee)";
};
animations = {
enabled = "yes";
bezier = [
"overshot, 0.05, 0.9, 0.1, 1.05"
"smoothOut, 0.36, 0, 0.66, -0.56"
"smoothIn, 0.25, 1, 0.5, 1"
];
animation = [
"windows, 1, 5, overshot, slide"
"windowsOut, 1, 4, smoothOut, slide"
"windowsMove, 1, 4, default"
"border, 1, 10, default"
"fade, 1, 10, smoothIn"
"fadeDim, 1, 10, smoothIn"
"workspaces, 1, 6, default"
];
};
dwindle = {
pseudotile = "yes";
preserve_split = "yes";
};
gestures = {
workspace_swipe = "off";
};
misc = {
force_default_wallpaper = 0;
};
windowrule = [
"float, file_progress"
"float, confirm"
"float, dialog"
"float, download"
"float, notification"
"float, error"
"float, splash"
"float, confirmreset"
"float, title:Open File"
"float, title:branchdialog"
"float,viewnior"
"float, pavucontrol-qt"
"float, pavucontrol"
"float, file-roller"
"fullscreen, wlogout"
"float, title:wlogout"
"fullscreen, title:wlogout"
"idleinhibit stayfocused, mpv"
];
windowrulev2 = [
"float, title:^(Media viewer)$"
# Picture in picture windows
"float, title:^(Picture-in-Picture)$"
"pin, title:^(Picture-in-Picture)$"
"float, class:^(vesktop)$,title:^(Discord Popout)$"
"pin, class:^(vesktop)$,title:^(Discord Popout)$"
"float, class:^(steam)$,title:^(Friends List)$"
# Workspace assign
"workspace: 1, class:^(kitty)$"
"workspace: 2, class:^(firefox)$"
"workspace: 5, class:^(steam)$"
"workspace: 10, class:^(vesktop)$"
];
input = {
kb_layout = "us";
kb_variant = "";
kb_model = "";
kb_options = "";
kb_rules = "";
follow_mouse = 1;
touchpad = {
natural_scroll = "no";
};
sensitivity = 0; # -1.0 - 1.0, 0 means no modification.
};
};
extraConfig = ''
exec-once = dbus-update-activation-environment --systemd --all
exec-once = systemctl --user import-environment WAYLAND_DISPLAY XDG_CURRENT_DESKTOP
exec-once = /usr/lib/polkit-gnome/polkit-gnome-authentication-agent-1
exec-once = nwg-look -a
exec-once = [workspace 2 silent] firefox
exec-once = [workspace 10 silent] vesktop
exec-once = [workspace 5 silent] steam
'';
};
}

View File

@@ -0,0 +1,26 @@
{ pkgs, ... }:
{
programs.kitty = {
enable = true;
shellIntegration.enableZshIntegration = true;
font = {
name = "jetbrains mono nerd font";
package = pkgs.nerdfonts;
size = 12;
};
settings = {
include = "~/.config/kitty/macchiato.conf";
bold_font = "auto";
italic_font = "auto";
bold_italic_font = "auto";
mouse_hide_wait = "2.0";
cursor_shape = "block";
url_color = "#0087bd";
url_style = "dotted";
confirm_os_window_close = "0";
background_opacity = "0.8";
};
};
}

View File

@@ -0,0 +1,80 @@
# vim:ft=kitty
## name: Catppuccin Kitty Macchiato
## author: Catppuccin Org
## license: MIT
## upstream: https://github.com/catppuccin/kitty/blob/main/themes/macchiato.conf
## blurb: Soothing pastel theme for the high-spirited!
# The basic colors
foreground #CAD3F5
background #24273A
selection_foreground #24273A
selection_background #F4DBD6
# Cursor colors
cursor #F4DBD6
cursor_text_color #24273A
# URL underline color when hovering with mouse
url_color #F4DBD6
# Kitty window border colors
active_border_color #B7BDF8
inactive_border_color #6E738D
bell_border_color #EED49F
# OS Window titlebar colors
wayland_titlebar_color #24273A
macos_titlebar_color #24273A
# Tab bar colors
active_tab_foreground #181926
active_tab_background #C6A0F6
inactive_tab_foreground #CAD3F5
inactive_tab_background #1E2030
tab_bar_background #181926
# Colors for marks (marked text in the terminal)
mark1_foreground #24273A
mark1_background #B7BDF8
mark2_foreground #24273A
mark2_background #C6A0F6
mark3_foreground #24273A
mark3_background #7DC4E4
# The 16 terminal colors
# black
color0 #494D64
color8 #5B6078
# red
color1 #ED8796
color9 #ED8796
# green
color2 #A6DA95
color10 #A6DA95
# yellow
color3 #EED49F
color11 #EED49F
# blue
color4 #8AADF4
color12 #8AADF4
# magenta
color5 #F5BDE6
color13 #F5BDE6
# cyan
color6 #8BD5CA
color14 #8BD5CA
# white
color7 #B8C0E0
color15 #A5ADCB

View File

@@ -0,0 +1,21 @@
{
services.mako = {
enable = true;
font = "monospace 12";
icons = false;
width = 500;
height = 110;
layer = "overlay";
borderRadius = 15;
borderSize = 2;
maxIconSize = 64;
defaultTimeout = 5000;
sort = "-time";
ignoreTimeout = true;
backgroundColor = "#24273a";
textColor = "#cad3f5";
borderColor = "#8aadf4";
progressColor = "over #363a4f";
};
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 239 KiB

View File

@@ -0,0 +1,251 @@
{
programs.waybar = {
enable = true;
systemd.enable = true;
settings = {
mainBar = {
layer = "top";
position = "top";
mod = "dock";
exclusive = true;
passthrough = false;
gtk-layer-shell = true;
height = 0;
modules-left = [
"hyprland/workspaces"
];
modules-center = [
"hyprland/window"
];
modules-right = [
"tray"
"custom/updates"
"hyprland/language"
"pulseaudio"
"pulseaudio#microphone"
"clock"
"custom/weather"
];
"hyprland/window" = {
format = {};
};
"hyprland/workspaces" = {
disable-scroll = true;
all-outputs = true;
on-click = "activate";
persistent_workspaces = {
"1" = [];
};
};
"hyprland/language" = {
format = {};
format-en = "US";
};
"custom/weather" = {
tooltip = true;
format = {};
interval = 30;
exec = "sudo waybar-weather";
return-type = "json";
};
tray = {
icon-size = 16;
spacing = 10;
};
clock = {
format = "{:%I:%M %p}";
tooltip-format = "<big>{ =%Y %B}</big>\n<tt><small>{calendar}</small></tt>";
};
pulseaudio = {
format = "{icon} {volume}%";
tooltip = false;
format-muted = " Muted";
on-click = "pamixer -t";
on-scroll-up = "pamixer -i 5";
on-scroll-down = "pamixer -d 5";
scroll-step = 5;
format-icons = {
headphone = "";
hands-free = "";
headset = "";
phone = "";
portable = "";
car = "";
default = ["" "" ""];
};
};
"pulseaudio#microphone" = {
format = "{format_source}";
format-source = "🎙{volume}%";
format-source-muted = "🎙Muted";
on-click = "pamixer --default-source -t";
on-scroll-up = "pamixer --default-source -i 5";
on-scroll-down = "pamixer --default-source -d 5";
scroll-step = 5;
};
};
};
style = ''
* {
border: none;
border-radius: 0;
font-family:
Jetbrains Mono Nerd Font,
monospace;
font-weight: bold;
font-size: 14px;
min-height: 0;
}
window#waybar {
background: rgba(21, 18, 27, 0);
color: #cdd6f4;
}
tooltip {
background: #1e1e2e;
border-radius: 10px;
border-width: 2px;
border-style: solid;
border-color: #11111b;
}
#workspaces button {
padding: 5px;
color: #313244;
margin-right: 5px;
}
#workspaces button.active {
color: #a6adc8;
}
#workspaces button.focused {
color: #a6adc8;
background: #eba0ac;
border-radius: 10px;
}
#workspaces button.urgent {
color: #11111b;
background: #a6e3a1;
border-radius: 10px;
}
#workspaces button:hover {
background: #11111b;
color: #cdd6f4;
border-radius: 10px;
}
#language,
#custom-updates,
#custom-caffeine,
#custom-weather,
#window,
#clock,
#battery,
#pulseaudio,
#network,
#workspaces,
#tray,
#backlight {
background: #1e1e2e;
padding: 0px 10px;
margin: 3px 0px;
margin-top: 10px;
border: 1px solid #181825;
}
#tray {
border-radius: 10px;
margin-right: 10px;
}
#workspaces {
background: #1e1e2e;
border-radius: 10px;
margin-left: 10px;
padding-right: 0px;
padding-left: 5px;
}
#custom-caffeine {
color: #89dceb;
border-radius: 10px 0px 0px 10px;
border-right: 0px;
margin-left: 10px;
}
#custom-language {
color: #f38ba8;
border-left: 0px;
border-right: 0px;
}
#custom-updates {
color: #f5c2e7;
border-radius: 10px 0px 0px 10px;
border-left: 0px;
border-right: 0px;
}
#window {
border-radius: 10px;
margin-left: 60px;
margin-right: 60px;
}
#clock {
color: #fab387;
border-radius: 10px 0px 0px 10px;
margin-left: 5px;
border-right: 0px;
}
#network {
color: #f9e2af;
border-left: 0px;
border-right: 0px;
}
#pulseaudio {
color: #89b4fa;
border-left: 0px;
border-right: 0px;
}
#pulseaudio.microphone {
color: #cba6f7;
border-radius: 0px 10px 10px 0px;
border-left: 0px;
border-right: 0px;
margin-right: 5px;
}
#battery {
color: #a6e3a1;
border-radius: 0 10px 10px 0;
margin-right: 10px;
border-left: 0px;
}
#custom-weather {
border-radius: 0px 10px 10px 0px;
border-right: 0px;
margin-left: 0px;
}
'';
};
}

View File

@@ -0,0 +1,133 @@
#!/usr/bin/env python
import json
from datetime import datetime
import requests
WEATHER_CODES = {
"113": "☀️ ",
"116": "",
"119": "☁️ ",
"122": "☁️ ",
"143": "☁️ ",
"176": "🌧️",
"179": "🌧️",
"182": "🌧️",
"185": "🌧️",
"200": "⛈️ ",
"227": "🌨️",
"230": "🌨️",
"248": "☁️ ",
"260": "☁️ ",
"263": "🌧️",
"266": "🌧️",
"281": "🌧️",
"284": "🌧️",
"293": "🌧️",
"296": "🌧️",
"299": "🌧️",
"302": "🌧️",
"305": "🌧️",
"308": "🌧️",
"311": "🌧️",
"314": "🌧️",
"317": "🌧️",
"320": "🌨️",
"323": "🌨️",
"326": "🌨️",
"329": "❄️ ",
"332": "❄️ ",
"335": "❄️ ",
"338": "❄️ ",
"350": "🌧️",
"353": "🌧️",
"356": "🌧️",
"359": "🌧️",
"362": "🌧️",
"365": "🌧️",
"368": "🌧️",
"371": "❄️",
"374": "🌨️",
"377": "🌨️",
"386": "🌨️",
"389": "🌨️",
"392": "🌧️",
"395": "❄️ ",
}
data = {}
weather = requests.get("https://wttr.in/?format=j1").json()
def format_time(time):
return time.replace("00", "").zfill(2)
def format_temp(temp):
return (hour["FeelsLikeF"] + "°").ljust(3)
def format_chances(hour):
chances = {
"chanceoffog": "Fog",
"chanceoffrost": "Frost",
"chanceofovercast": "Overcast",
"chanceofrain": "Rain",
"chanceofsnow": "Snow",
"chanceofsunshine": "Sunshine",
"chanceofthunder": "Thunder",
"chanceofwindy": "Wind",
}
conditions = []
for event in chances.keys():
if int(hour[event]) > 0:
conditions.append(chances[event] + " " + hour[event] + "%")
return ", ".join(conditions)
tempint = int(weather["current_condition"][0]["FeelsLikeF"])
extrachar = ""
if tempint > 0 and tempint < 10:
extrachar = "+"
data["text"] = (
""
+ WEATHER_CODES[weather["current_condition"][0]["weatherCode"]]
+ " "
+ extrachar
+ weather["current_condition"][0]["FeelsLikeF"]
+ "°"
)
data["tooltip"] = (
f"<b>{weather['current_condition'][0]['weatherDesc'][0]['value']} {weather['current_condition'][0]['temp_C']}°</b>\n"
)
data["tooltip"] += f"Feels like: {weather['current_condition'][0]['FeelsLikeF']}°\n"
data["tooltip"] += f"Wind: {weather['current_condition'][0]['windspeedKmph']}Km/h\n"
data["tooltip"] += f"Humidity: {weather['current_condition'][0]['humidity']}%\n"
for i, day in enumerate(weather["weather"]):
data["tooltip"] += f"\n<b>"
if i == 0:
data["tooltip"] += "Today, "
if i == 1:
data["tooltip"] += "Tomorrow, "
data["tooltip"] += f"{day['date']}</b>\n"
data["tooltip"] += f"⬆️ {day['maxtempF']}° ⬇️ {day['mintempF']}° "
data[
"tooltip"
] += f"🌅 {day['astronomy'][0]['sunrise']} 🌇 {day['astronomy'][0]['sunset']}\n"
for hour in day["hourly"]:
if i == 0:
if int(format_time(hour["time"])) < datetime.now().hour - 2:
continue
data[
"tooltip"
] += f"{format_time(hour['time'])} {WEATHER_CODES[hour['weatherCode']]} {format_temp(hour['FeelsLikeF'])} {hour['weatherDesc'][0]['value']}, {format_chances(hour)}\n"
print(json.dumps(data))

Binary file not shown.

After

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

View File

@@ -0,0 +1,36 @@
{
"label" : "lock",
"action" : "swaylock",
"text" : "Lock",
"keybind" : "l"
}
{
"label" : "hibernate",
"action" : "systemctl hibernate",
"text" : "Hibernate",
"keybind" : "h"
}
{
"label" : "logout",
"action" : "sleep 1; hyprctl dispatch exit",
"text" : "Logout",
"keybind" : "e"
}
{
"label" : "shutdown",
"action" : "systemctl poweroff",
"text" : "Shutdown",
"keybind" : "s"
}
{
"label" : "suspend",
"action" : "systemctl suspend",
"text" : "Suspend",
"keybind" : "u"
}
{
"label" : "reboot",
"action" : "systemctl reboot",
"text" : "Reboot",
"keybind" : "r"
}

View File

@@ -0,0 +1,50 @@
* {
background-image: none;
}
window {
background-color: rgba(36, 39, 58, 0.9);
}
button {
margin: 8px;
color: #cad3f5;
background-color: #363a4f;
border-style: solid;
border-width: 2px;
background-repeat: no-repeat;
background-position: center;
background-size: 25%;
}
button:active,
button:focus,
button:hover {
color: #8bd5ca;
background-color: #24273a;
outline-style: none;
}
#lock {
background-image: image(url("icons/lock.png"));
}
#logout {
background-image: image(url("icons/logout.png"));
}
#suspend {
background-image: image(url("icons/suspend.png"));
}
#hibernate {
background-image: image(url("icons/hibernate.png"));
}
#shutdown {
background-image: image(url("icons/shutdown.png"));
}
#reboot {
background-image: image(url("icons/reboot.png"));
}

View File

@@ -0,0 +1,145 @@
{
programs.wofi = {
enable = true;
style = ''
@define-color rosewater #f4dbd6;
@define-color rosewater-rgb rgb(244, 219, 214);
@define-color flamingo #f0c6c6;
@define-color flamingo-rgb rgb(240, 198, 198);
@define-color pink #f5bde6;
@define-color pink-rgb rgb(245, 189, 230);
@define-color mauve #c6a0f6;
@define-color mauve-rgb rgb(198, 160, 246);
@define-color red #ed8796;
@define-color red-rgb rgb(237, 135, 150);
@define-color maroon #ee99a0;
@define-color maroon-rgb rgb(238, 153, 160);
@define-color peach #f5a97f;
@define-color peach-rgb rgb(245, 169, 127);
@define-color yellow #eed49f;
@define-color yellow-rgb rgb(238, 212, 159);
@define-color green #a6da95;
@define-color green-rgb rgb(166, 218, 149);
@define-color teal #8bd5ca;
@define-color teal-rgb rgb(139, 213, 202);
@define-color sky #91d7e3;
@define-color sky-rgb rgb(145, 215, 227);
@define-color sapphire #7dc4e4;
@define-color sapphire-rgb rgb(125, 196, 228);
@define-color blue #8aadf4;
@define-color blue-rgb rgb(138, 173, 244);
@define-color lavender #b7bdf8;
@define-color lavender-rgb rgb(183, 189, 248);
@define-color text #cad3f5;
@define-color text-rgb rgb(202, 211, 245);
@define-color subtext1 #b8c0e0;
@define-color subtext1-rgb rgb(184, 192, 224);
@define-color subtext0 #a5adcb;
@define-color subtext0-rgb rgb(165, 173, 203);
@define-color overlay2 #939ab7;
@define-color overlay2-rgb rgb(147, 154, 183);
@define-color overlay1 #8087a2;
@define-color overlay1-rgb rgb(128, 135, 162);
@define-color overlay0 #6e738d;
@define-color overlay0-rgb rgb(110, 115, 141);
@define-color surface2 #5b6078;
@define-color surface2-rgb rgb(91, 96, 120);
@define-color surface1 #494d64;
@define-color surface1-rgb rgb(73, 77, 100);
@define-color surface0 #363a4f;
@define-color surface0-rgb rgb(54, 58, 79);
@define-color base #24273a;
@define-color base-rgb rgb(36, 39, 58);
@define-color mantle #1e2030;
@define-color mantle-rgb rgb(30, 32, 48);
@define-color crust #181926;
@define-color crust-rgb rgb(24, 25, 38);
* {
font-family: "Inconsolata Nerd Font", monospace;
font-size: 14px;
}
/* Window */
window {
margin: 0px;
padding: 10px;
border: 0.16em solid @lavender;
border-radius: 0.1em;
background-color: @base;
}
/* Inner Box */
#inner-box {
margin: 5px;
padding: 10px;
border: none;
background-color: @base;
}
/* Outer Box */
#outer-box {
margin: 5px;
padding: 10px;
border: none;
background-color: @base;
}
/* Scroll */
#scroll {
margin: 0px;
padding: 10px;
border: none;
background-color: @base;
}
/* Input */
#input {
margin: 5px 20px;
padding: 10px;
border: none;
border-radius: 0.1em;
color: @text;
background-color: @base;
}
#input image {
border: none;
color: @red;
}
#input * {
outline: 4px solid @red!important;
}
/* Text */
#text {
margin: 5px;
border: none;
color: @text;
}
#entry {
background-color: @base;
}
#entry arrow {
border: none;
color: @lavender;
}
/* Selected Entry */
#entry:selected {
border: 0.11em solid @lavender;
}
#entry:selected #text {
color: @mauve;
}
#entry:drop(active) {
background-color: @lavender!important;
}
'';
};
}

View File

@@ -0,0 +1,86 @@
{ pkgs, ... }:
{
specialisation.hyprland.configuration = {
imports = [
./environment.nix
];
home-manager.users.matt = import ./home.nix;
services = {
displayManager.sddm.enable = true;
displayManager.sddm.package = pkgs.kdePackages.sddm;
displayManager.sddm.theme = "catppuccin-mocha";
displayManager.defaultSession = "hyprland";
# disable plasma
desktopManager.plasma6.enable = false;
dbus.enable = true;
};
programs.hyprland = {
enable = true;
xwayland.enable = true;
portalPackage = pkgs.xdg-desktop-portal-hyprland;
};
systemd = {
user.services.polkit-gnome-authentication-agent-1 = {
description = "polkit-gnome-authentication-agent-1";
wantedBy = [ "graphical-session.target" ];
wants = [ "graphical-session.target" ];
after = [ "graphical-session.target" ];
serviceConfig = {
Type = "simple";
ExecStart = "${pkgs.polkit_gnome}/libexec/polkit-gnome-authentication-agent-1";
Restart = "on-failure";
RestartSec = 1;
TimeoutStopSec = 10;
};
};
extraConfig = ''
DefaultTimeoutStopSec=10s
'';
};
security = {
polkit.enable = true;
# configure sudo
sudo.extraRules = [
{
commands = [
{
command = "/run/current-system/sw/bin/waybar-weather";
options = [ "NOPASSWD" ];
}
];
groups = [ "wheel" ];
}
];
};
xdg.portal = {
enable = true;
wlr.enable = false;
xdgOpenUsePortal = false;
extraPortals = [
pkgs.xdg-desktop-portal-hyprland
pkgs.xdg-desktop-portal-gtk
];
};
fonts.packages = with pkgs; [
nerdfonts
meslo-lgs-nf
];
nixpkgs.overlays = [
(self: super: {
waybar = super.waybar.overrideAttrs (oldAttrs: {
mesonFlags = oldAttrs.mesonFlags ++ [ "-Dexperimental=true" ];
});
})
];
};
}

View File

@@ -0,0 +1,53 @@
{ pkgs, ... }:
let
waybarWeatherScript = pkgs.writeScriptBin "waybar-weather" ''
#!/usr/bin/env nix-shell
#! nix-shell -i bash --packages python3 python3Packages.requests
python /home/matt/.config/waybar/scripts/waybar-wttr.py
'';
in
{
environment.systemPackages = with pkgs; [
adwaita-icon-theme
apple-cursor
catppuccin
catppuccin-gtk
catppuccin-qt5ct
catppuccin-sddm
colloid-gtk-theme
colloid-icon-theme
dunst
glib
gnome-disk-utility
gsettings-desktop-schemas
hyprland
hyprshot
libnotify
mako
meson
nautilus
networkmanagerapplet
nwg-look
pamixer
papirus-folders
playerctl
polkit
polkit_gnome
qt5.qtwayland
qt6.qtwayland
rofi-wayland
waybar
waybarWeatherScript
wayland-protocols
wayland-utils
wl-clipboard
wlogout
wlroots
wofi
xdg-desktop-portal-hyprland
xdg-desktop-portal-gtk
xdg-desktop-portal-wlr
xwayland
];
}

View File

@@ -0,0 +1,151 @@
{ pkgs, ... }:
{
imports = [
./config.nix
./config/btop
./config/hypr
./config/kitty
./config/mako
./config/waybar
./config/wofi
];
services = {
hyprpaper = {
enable = true;
settings = {
preload = [ "~/.config/wallpapers/wall.png" ];
wallpaper = [
"DP-1, ~/.config/wallpapers/wall.png"
"DP-2, ~/.config/wallpapers/wall.png"
];
splash = false;
};
};
hypridle = {
enable = true;
settings = {
general = {
after_sleep_cmd = "hyprctl dispatch dpms on";
ignore_dbus_inhibit = false;
lock_cmd = "hyprlock";
};
listener = [
{
timeout = 3600;
}
];
};
};
};
programs.hyprlock = {
enable = true;
settings = {
background = [
{
monitor = "";
path = "/home/matt/.config/wallpapers/wall.png"; # supports png, jpg, webp (no animations, though)
color = "rgba(25, 20, 20, 1.0)";
# all these options are taken from hyprland, see https://wiki.hyprland.org/Configuring/Variables/#blur for explanations
blur_passes = "3"; # 0 disables blurring
blur_size = "7";
noise = "0.0117";
contrast = "0.8916";
brightness = "0.8172";
vibrancy = "0.1696";
vibrancy_darkness = "0.0";
}
];
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 = ''<span foreground="##cad3f5">Password...</span>'';
shadow_passes = 2;
}
];
};
};
home.sessionVariables = {
BROWSER = "firefox";
EDITOR = "nano";
TERMINAL = "kitty";
NIXOS_OZONE_WL = "1";
QT_QPA_PLATFORMTHEME = "gtk3";
QT_SCALE_FACTOR = "1";
MOZ_ENABLE_WAYLAND = "1";
SDL_VIDEODRIVER = "wayland";
QT_QPA_PLATFORM = "wayland-egl";
QT_WAYLAND_DISABLE_WINDOWDECORATION = "1";
QT_AUTO_SCREEN_SCALE_FACTOR = "1";
GTK_CSD = "0";
# WLR_DRM_DEVICES = "/dev/dri/card0";
# WLR_NO_HARDWARE_CURSORS = "1";
CLUTTER_BACKEND = "wayland";
# WLR_RENDERER = "vulkan";
XCURSOR_THEME = "macOS-Monterey";
XCURSOR_SIZE = "24";
GTK_THEME="catppuccin-macchiato-blue-compact";
XDG_CURRENT_DESKTOP = "Hyprland";
XDG_SESSION_DESKTOP = "Hyprland";
XDG_SESSION_TYPE = "wayland";
GTK_USE_PORTAL = "1";
NIXOS_XDG_OPEN_USE_PORTAL = "1";
XDG_CACHE_HOME = "\${HOME}/.cache";
XDG_CONFIG_HOME = "\${HOME}/.config";
#XDG_BIN_HOME = "\${HOME}/.local/bin";
XDG_DATA_HOME = "\${HOME}/.local/share";
};
home.pointerCursor = {
gtk.enable = true;
package = pkgs.apple-cursor;
name = "macOS-Monterey";
size = 24;
};
gtk = {
enable = true;
cursorTheme = {
name = "macOS-Monterey"; # macOS-[BigSur, Monterey]-[ , White, White-Windows, Windows]
package = pkgs.apple-cursor;
};
theme = {
name = "catppuccin-macchiato-blue-compact";
package = pkgs.catppuccin-gtk.override {
size = "compact";
accents = ["blue"];
variant = "macchiato";
};
};
iconTheme = {
name = "Colloid-dark"; # Colloid, Colloid-light, Colloid-dark
package = pkgs.colloid-icon-theme;
};
gtk3.extraConfig = {
# gtk-application-prefer-dark-theme = true;
"AdwStyleManager:color-scheme" = "ADW_COLOR_SCHEME_PREFER_DARK";
};
gtk4.extraConfig = {
# gtk-application-prefer-dark-theme = true;
"AdwStyleManager:color-scheme" = "ADW_COLOR_SCHEME_PREFER_DARK";
};
};
}

12
hosts/desktop/sops.nix Normal file
View File

@@ -0,0 +1,12 @@
{
...
}:
{
sops.defaultSopsFile = ../../secrets/secrets.yaml;
sops.age.sshKeyPaths = [ "/etc/ssh/ssh_host_ed25519_key" ];
sops.secrets."desktop/matt_password" = {};
sops.secrets."desktop/matt_password".neededForUsers = true;
sops.secrets."wifi" = {};
}

View File

@@ -46,7 +46,7 @@
enable = true; enable = true;
httpPort = "9981"; httpPort = "9981";
httpsPort = "9943"; httpsPort = "9943";
redisSock = "/var/run/redis-nextcloud/redis.sock"; redisSock = "/run/redis-nextcloud/redis.sock";
}; };
ollama.enable = true; ollama.enable = true;

View File

@@ -194,6 +194,7 @@ in
"jallen-nas" "jallen-nas"
"docker" "docker"
"podman" "podman"
config.services.redis.servers.nextcloud.user
]; # Enable sudo for the user. ]; # Enable sudo for the user.
hashedPasswordFile = passwordFile; hashedPasswordFile = passwordFile;
}; };
@@ -207,6 +208,15 @@ in
home = "/var/lib/nut"; home = "/var/lib/nut";
hashedPasswordFile = passwordFile; hashedPasswordFile = passwordFile;
}; };
users.nextcloud = {
isNormalUser = true;
extraGroups = [
"jallen-nas"
"nix-apps"
];
hashedPasswordFile = passwordFile;
};
}; };
# Virtualisation # Virtualisation

View File

@@ -31,14 +31,33 @@ in
networkmanager.enable = false; networkmanager.enable = false;
interfaces = { interfaces = {
wlp6s0.ipv4.addresses = [ wlp6s0 = {
{ useDHCP = false;
address = ipAddress; ipv4.addresses = [
prefixLength = 24; {
} address = ipAddress;
]; prefixLength = 24;
}
];
};
# br0 = {
# useDHCP = false;
# ipv4.addresses = [
# {
# address = ipAddress;
# prefixLength = 24;
# }
# ];
# };
}; };
# bridges = {
# br0 = {
# interfaces = [ "wlp6s0" ];
# };
# };
defaultGateway.address = gateway; defaultGateway.address = gateway;
nameservers = [ gateway ]; nameservers = [ gateway ];
@@ -62,5 +81,13 @@ in
# always allow traffic from your Tailscale network # always allow traffic from your Tailscale network
trustedInterfaces = [ "tailscale0" ]; trustedInterfaces = [ "tailscale0" ];
}; };
# nat = {
# enable = true;
# internalInterfaces = ["ve-+"];
# externalInterface = "wlp9s0";
# # Lazy IPv6 connectivity for the container
# enableIPv6 = true;
# };
}; };
} }

View File

@@ -184,6 +184,7 @@ in
nextcloud = { nextcloud = {
enable = true; enable = true;
port = 6380; port = 6380;
# user = "911";#"${config.users.users.nix-apps.name}:${config.users.groups.jallen-nas.name}";
}; };
}; };
}; };

View File

@@ -1,5 +1,5 @@
{ {
... config, ...
}: }:
{ {
sops.defaultSopsFile = ../../secrets/secrets.yaml; sops.defaultSopsFile = ../../secrets/secrets.yaml;
@@ -22,12 +22,42 @@
}; };
sops.secrets."jallen-nas/nextcloud/dbpassword" = { sops.secrets."jallen-nas/nextcloud/dbpassword" = {
# restartUnits = [ "podman-nextcloud.service" ]; restartUnits = [ "container@nextcloud.service" ];
}; };
sops.secrets."jallen-nas/nextcloud/adminpassword" = { sops.secrets."jallen-nas/nextcloud/adminpassword" = {
# restartUnits = [ "podman-nextcloud.service" ]; restartUnits = [ "container@nextcloud.service" ];
}; };
sops.secrets."jallen-nas/nextcloud/smtppassword" = { sops.secrets."jallen-nas/nextcloud/smtppassword" = {
# restartUnits = [ "nextcloud.service" ]; restartUnits = [ "container@nextcloud.service" ];
}; };
sops.templates."nextcloud-smtp".content = ''
"${config.sops.placeholder."jallen-nas/nextcloud/smtppassword"}"
'';
# Permission modes are in octal representation (same as chmod),
# the digits represent: user|group|others
# 7 - full (rwx)
# 6 - read and write (rw-)
# 5 - read and execute (r-x)
# 4 - read only (r--)
# 3 - write and execute (-wx)
# 2 - write only (-w-)
# 1 - execute only (--x)
# 0 - none (---)
sops.secrets."jallen-nas/nextcloud/dbpassword".mode = "0777";
# Either a user id or group name representation of the secret owner
# It is recommended to get the user name from `config.users.users.<?name>.name` to avoid misconfiguration
# sops.secrets."jallen-nas/nextcloud/dbpassword".owner = config.users.users.nix-apps.name;
# # Either the group id or group name representation of the secret group
# # It is recommended to get the group name from `config.users.users.<?name>.group` to avoid misconfiguration
# sops.secrets."jallen-nas/nextcloud/dbpassword".group = config.users.users.jallen-nas.group;
sops.secrets."jallen-nas/nextcloud/adminpassword".mode = "0777";
# sops.secrets."jallen-nas/nextcloud/adminpassword".owner = config.users.users.nix-apps.name;
# sops.secrets."jallen-nas/nextcloud/adminpassword".group = config.users.users.jallen-nas.group;
sops.secrets."jallen-nas/nextcloud/smtppassword".mode = "0777";
# sops.secrets."jallen-nas/nextcloud/smtppassword".owner = config.users.users.nix-apps.name;
# sops.secrets."jallen-nas/nextcloud/smtppassword".group = config.users.users.jallen-nas.group;
} }

View File

@@ -0,0 +1,123 @@
{ config, ... }:
let
adminpass = config.sops.secrets."jallen-nas/nextcloud/adminpassword".path;
dbpass = config.sops.secrets."jallen-nas/nextcloud/dbpassword".path;
smtppassword = config.sops.templates."nextcloud-smtp".content;
in
{
containers.nextcloud = {
autoStart = true;
privateNetwork = true;
# hostAddress = "127.0.0.1";
# localAddress = "10.233.0.2";
# hostAddress6 = "fc00::1";
# localAddress6 = "fc00::2";
# hostForward = [
# {
# hostPort = 9943;
# containerPort = 80;
# }
# ];
hostBridge = "br0";
bindMounts = {
secrets = {
hostPath = "/run/secrets/jallen-nas/nextcloud";
isReadOnly = true;
mountPoint = "/run/secrets/jallen-nas/nextcloud";
};
data = {
hostPath = "/media/nas/main/nextcloud";
isReadOnly = false;
mountPoint = "/data";
};
};
config = { config, pkgs, lib, ... }: {
services = {
nextcloud = {
enable = true;
package = pkgs.nextcloud29;
datadir = "/data";
hostName = "localhost";
appstoreEnable = true;
caching.redis = true;
configureRedis = true;
config = {
adminuser = "mjallen";
adminpassFile = adminpass;
dbhost = "10.0.1.18:3306";
dbtype = "mysql";
dbname = "jallen_nextcloud";
dbuser = "nextcloud";
dbpassFile = dbpass;
};
settings = {
trusted_domains = [
"10.0.1.18:9980"
"10.0.1.18:9943"
"cloud.mjallen.dev"
];
trusted_proxies = [
"10.0.1.18"
];
maintenance_window_start = 6;
default_phone_region = "US";
mail_from_address = "matt.l.jallen";
mail_smtpmode = "smtp";
mail_sendmailmode = "smtp";
mail_domain = "gmail.com";
mail_smtpauth = 1;
mail_smtpname = "matt.l.jallen";
mail_smtppassword = smtppassword;
mail_smtpsecure = "ssl";
mail_smtphost = "smtp.gmail.com";
mail_smtpport = 465;
enable_previews = true;
enabledPreviewProviders = [
"OC\\\\Preview\\\\PNG"
"OC\\\\Preview\\\\JPEG"
"OC\\\\Preview\\\\GIF"
"OC\\\\Preview\\\\BMP"
"OC\\\\Preview\\\\XBitmap"
"OC\\\\Preview\\\\MP3"
"OC\\\\Preview\\\\TXT"
"OC\\\\Preview\\\\MarkDown"
"OC\\\\Preview\\\\OpenDocument"
"OC\\\\Preview\\\\Krita"
"OC\\\\Preview\\\\HEIC"
];
};
};
nginx = {
enable = true;
virtualHosts = {
"nextcloud-container.local" = {
# Change this to the desired port number
listen = [{ addr = "0.0.0.0"; port = 9943; }];
root = "/var/www/nextcloud";
# You may need to adjust other options for your specific setup
};
};
};
};
system.stateVersion = "23.11";
networking = {
firewall = {
enable = true;
allowedTCPPorts = [ 9943 ];
};
# Use systemd-resolved inside the container
# Workaround for bug https://github.com/NixOS/nixpkgs/issues/162686
useHostResolvConf = lib.mkForce false;
};
services.resolved.enable = true;
};
};
}

View File

@@ -1,60 +0,0 @@
{
config,
...
}:
{
services.nextcloud = {
enable = true;
homeDir = "/media/nas/ssd/nix-app-data/nextcloud"; # ???
dataDir = "/media/nas/main/nextcloud"; # ???
caching.redis = true;
configureRedis = true;
appstore.enable = true;
config = {
adminuser = "mjallen";
adminpassFile = config.sops.secrets."jallen-nas/nextcloud/adminpassword".path;
dbhost = "10.0.1.18:3306";
dbtype = "mysql";
dbname = "jallen_nextcloud";
dbuser = "nextcloud";
dbpassFile = config.sops.secrets."jallen-nas/nextcloud/dbpassword".path;
};
settings = {
trusted_domains = [
"10.0.1.18:9943"
"cloud.mjallen.dev"
];
trusted_proxies = [
"10.0.1.18"
];
maintenance_window_start = 6;
default_phone_region = "US";
mail_from_address = "matt.l.jallen";
mail_smtpmode = "smtp";
mail_sendmailmode = "smtp";
mail_domain = "gmail.com";
mail_smtpauth = 1;
mail_smtpname = "matt.l.jallen";
mail_smtppassword = builtins.readFile config.sops.secrets."jallen-nas/nextcloud/dbpassword".path;# ???
mail_smtpsecure = "ssl";
mail_smtphost = "smtp.gmail.com";
mail_smtpport = 465;
enable_previews = true;
enabledPreviewProviders = [
"OC\\Preview\\PNG"
"OC\\Preview\\JPEG"
"OC\\Preview\\GIF"
"OC\\Preview\\BMP"
"OC\\Preview\\XBitmap"
"OC\\Preview\\MP3"
"OC\\Preview\\TXT"
"OC\\Preview\\MarkDown"
"OC\\Preview\\OpenDocument"
"OC\\Preview\\Krita"
"OC\\Preview\\HEIC"
];
};
};
}

View File

@@ -1,8 +0,0 @@
{ config, pkgs, ... }:
let
# creds
password1 = "BogieDudie1"
in
{
}