Compare commits
33 Commits
demo
...
d55077e045
| Author | SHA1 | Date | |
|---|---|---|---|
| d55077e045 | |||
| 1dddfebbb8 | |||
| 15317047e3 | |||
| 99f64a3145 | |||
| 6c79eff909 | |||
| e35f7923ae | |||
| 55f2b15896 | |||
| 00a1828a0d | |||
| 2f6bed228d | |||
| dee0c41a05 | |||
| a97d49f8a7 | |||
| 636c8d4d0d | |||
| 58276cc8e0 | |||
| dd4274f036 | |||
| 626ede8955 | |||
| 9fdfd2efa0 | |||
| c2380696ef | |||
| df478c93e4 | |||
| a4588c49aa | |||
| c3eb30b199 | |||
| 6d5efdf451 | |||
| dbab6f8d32 | |||
| a21abe2f8f | |||
| 038cc8ce3b | |||
| 20e3ffdd48 | |||
| 94d28215a6 | |||
| 7182bc8e8e | |||
| aea83699b8 | |||
| 6febc0906b | |||
| 7929e07296 | |||
| bafe695b96 | |||
| 4bd523906c | |||
| 9154c8f6f8 |
1106
flake.lock
generated
1106
flake.lock
generated
File diff suppressed because it is too large
Load Diff
48
flake.nix
48
flake.nix
@@ -4,6 +4,8 @@
|
|||||||
inputs = {
|
inputs = {
|
||||||
nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
|
nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
|
||||||
|
|
||||||
|
nixos-hardware.url = "github:NixOS/nixos-hardware";
|
||||||
|
|
||||||
home-manager = {
|
home-manager = {
|
||||||
url = "github:nix-community/home-manager";
|
url = "github:nix-community/home-manager";
|
||||||
inputs.nixpkgs.follows = "nixpkgs";
|
inputs.nixpkgs.follows = "nixpkgs";
|
||||||
@@ -14,6 +16,11 @@
|
|||||||
inputs.nixpkgs.follows = "nixpkgs";
|
inputs.nixpkgs.follows = "nixpkgs";
|
||||||
};
|
};
|
||||||
|
|
||||||
|
agenix = {
|
||||||
|
url = "github:ryantm/agenix";
|
||||||
|
inputs.nixpkgs.follows = "nixpkgs";
|
||||||
|
};
|
||||||
|
|
||||||
nvf = {
|
nvf = {
|
||||||
url = "github:notashelf/nvf";
|
url = "github:notashelf/nvf";
|
||||||
inputs.nixpkgs.follows = "nixpkgs";
|
inputs.nixpkgs.follows = "nixpkgs";
|
||||||
@@ -24,21 +31,46 @@
|
|||||||
inputs.nixpkgs.follows = "nixpkgs";
|
inputs.nixpkgs.follows = "nixpkgs";
|
||||||
inputs.home-manager.follows = "home-manager";
|
inputs.home-manager.follows = "home-manager";
|
||||||
};
|
};
|
||||||
|
|
||||||
|
stylix = {
|
||||||
|
url = "github:nix-community/stylix";
|
||||||
|
inputs.nixpkgs.follows = "nixpkgs";
|
||||||
|
};
|
||||||
|
|
||||||
|
mango.url = "github:DreamMaoMao/mango?rev=1271832e947d3d4af27b36f687edd2f2e535f051";
|
||||||
|
|
||||||
|
hyprland.url = "github:hyprwm/Hyprland";
|
||||||
|
|
||||||
|
silentSDDM = {
|
||||||
|
url = "github:uiriansan/SilentSDDM";
|
||||||
|
inputs.nixpkgs.follows = "nixpkgs";
|
||||||
|
};
|
||||||
|
|
||||||
|
hyprdynamicmonitors.url = "github:fiffeek/hyprdynamicmonitors";
|
||||||
|
|
||||||
|
elephant = {
|
||||||
|
url = "github:abenz1267/elephant";
|
||||||
|
inputs.nixpkgs.follows = "nixpkgs";
|
||||||
|
};
|
||||||
|
|
||||||
|
walker = {
|
||||||
|
url = "github:abenz1267/walker";
|
||||||
|
inputs.elephant.follows = "elephant";
|
||||||
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
outputs =
|
outputs =
|
||||||
{ nixpkgs, ... }@inputs:
|
{ nixpkgs, ... }@inputs:
|
||||||
let
|
|
||||||
system = "x86_64-linux";
|
|
||||||
host = "demo";
|
|
||||||
in
|
|
||||||
{
|
{
|
||||||
nixosConfigurations.${host} = nixpkgs.lib.nixosSystem {
|
nixosConfigurations.vanta = nixpkgs.lib.nixosSystem {
|
||||||
inherit system;
|
system = "x86_64-linux";
|
||||||
specialArgs = { inherit inputs host; };
|
specialArgs = {
|
||||||
|
inherit inputs;
|
||||||
|
host = "vanta";
|
||||||
|
};
|
||||||
modules = [
|
modules = [
|
||||||
./modules/system
|
./modules/system
|
||||||
./hosts/${host}
|
./hosts/vanta
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -1 +0,0 @@
|
|||||||
Put host config here!
|
|
||||||
10
hosts/vanta/default.nix
Normal file
10
hosts/vanta/default.nix
Normal file
@@ -0,0 +1,10 @@
|
|||||||
|
{
|
||||||
|
inputs,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
{
|
||||||
|
imports = [
|
||||||
|
inputs.nixos-hardware.nixosModules.framework-12th-gen-intel
|
||||||
|
./hardware-configuration.nix
|
||||||
|
];
|
||||||
|
}
|
||||||
40
hosts/vanta/hardware-configuration.nix
Normal file
40
hosts/vanta/hardware-configuration.nix
Normal file
@@ -0,0 +1,40 @@
|
|||||||
|
# Do not modify this file! It was generated by ‘nixos-generate-config’
|
||||||
|
# and may be overwritten by future invocations. Please make changes
|
||||||
|
# to /etc/nixos/configuration.nix instead.
|
||||||
|
{ config, lib, pkgs, modulesPath, ... }:
|
||||||
|
|
||||||
|
{
|
||||||
|
imports =
|
||||||
|
[ (modulesPath + "/installer/scan/not-detected.nix")
|
||||||
|
];
|
||||||
|
|
||||||
|
boot.initrd.availableKernelModules = [ "xhci_pci" "thunderbolt" "nvme" "usbhid" "usb_storage" "sd_mod" ];
|
||||||
|
boot.initrd.kernelModules = [ ];
|
||||||
|
boot.kernelModules = [ "kvm-intel" ];
|
||||||
|
boot.extraModulePackages = [ ];
|
||||||
|
|
||||||
|
fileSystems."/" =
|
||||||
|
{ device = "/dev/disk/by-uuid/1df00fd1-f531-49b9-9dc6-6d17ca39b67a";
|
||||||
|
fsType = "ext4";
|
||||||
|
};
|
||||||
|
|
||||||
|
fileSystems."/boot" =
|
||||||
|
{ device = "/dev/disk/by-uuid/EE0E-CAE4";
|
||||||
|
fsType = "vfat";
|
||||||
|
options = [ "fmask=0077" "dmask=0077" ];
|
||||||
|
};
|
||||||
|
|
||||||
|
swapDevices =
|
||||||
|
[ { device = "/dev/disk/by-uuid/fbacd982-b161-447c-a34a-7b44bc063a08"; }
|
||||||
|
];
|
||||||
|
|
||||||
|
# Enables DHCP on each ethernet and wireless interface. In case of scripted networking
|
||||||
|
# (the default) this is the recommended approach. When using systemd-networkd it's
|
||||||
|
# still possible to use this option, but it's recommended to use it in conjunction
|
||||||
|
# with explicit per-interface declarations with `networking.interfaces.<interface>.useDHCP`.
|
||||||
|
networking.useDHCP = lib.mkDefault true;
|
||||||
|
# networking.interfaces.wlp166s0.useDHCP = lib.mkDefault true;
|
||||||
|
|
||||||
|
nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux";
|
||||||
|
hardware.cpu.intel.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware;
|
||||||
|
}
|
||||||
@@ -4,11 +4,24 @@
|
|||||||
{
|
{
|
||||||
imports = [
|
imports = [
|
||||||
./firefox.nix
|
./firefox.nix
|
||||||
|
./ghostty.nix
|
||||||
./git.nix
|
./git.nix
|
||||||
|
./helix.nix
|
||||||
|
./hypr
|
||||||
|
./mango.nix
|
||||||
./nvf.nix
|
./nvf.nix
|
||||||
./packages.nix
|
./packages.nix
|
||||||
./plasma.nix
|
# ./plasma.nix
|
||||||
|
./screenshot.nix
|
||||||
|
./ssh.nix
|
||||||
|
./stylix.nix
|
||||||
./vscode.nix
|
./vscode.nix
|
||||||
|
./walker.nix
|
||||||
|
./wallpaper.nix
|
||||||
|
./waybar
|
||||||
|
./wlogout.nix
|
||||||
|
./xdg.nix
|
||||||
|
./yazi.nix
|
||||||
./zsh.nix
|
./zsh.nix
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -18,6 +18,7 @@
|
|||||||
DisableProfileImport = true;
|
DisableProfileImport = true;
|
||||||
DisableProfileRefresh = true;
|
DisableProfileRefresh = true;
|
||||||
DisableTelemetry = true;
|
DisableTelemetry = true;
|
||||||
|
DisplayBookmarksToolbar = "never";
|
||||||
DontCheckDefaultBrowser = true;
|
DontCheckDefaultBrowser = true;
|
||||||
EnableTrackingProtection = {
|
EnableTrackingProtection = {
|
||||||
Value = true; # Tracking protection is enabled by default in both the regular browser and private browsing
|
Value = true; # Tracking protection is enabled by default in both the regular browser and private browsing
|
||||||
@@ -85,6 +86,7 @@
|
|||||||
};
|
};
|
||||||
search = {
|
search = {
|
||||||
default = "google";
|
default = "google";
|
||||||
|
force = true;
|
||||||
engines = {
|
engines = {
|
||||||
nix-packages = {
|
nix-packages = {
|
||||||
name = "Nix Packages";
|
name = "Nix Packages";
|
||||||
|
|||||||
13
modules/home/ghostty.nix
Normal file
13
modules/home/ghostty.nix
Normal file
@@ -0,0 +1,13 @@
|
|||||||
|
{
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
{
|
||||||
|
programs.ghostty = {
|
||||||
|
enable = true;
|
||||||
|
enableZshIntegration = true;
|
||||||
|
settings = {
|
||||||
|
term = "xterm-256color";
|
||||||
|
};
|
||||||
|
systemd.enable = true;
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -1,18 +1,40 @@
|
|||||||
{
|
{
|
||||||
pkgs,
|
pkgs,
|
||||||
|
config,
|
||||||
...
|
...
|
||||||
}:
|
}:
|
||||||
|
let
|
||||||
|
name = "Eclypsed";
|
||||||
|
email = "Ec1ypsed@proton.me";
|
||||||
|
signingKey = "sk-ssh-ed25519@openssh.com AAAAGnNrLXNzaC1lZDI1NTE5QG9wZW5zc2guY29tAAAAIB2h6y1Al2OVotYIpwPZMjiBLAncAI2pAPgES2+gVbJqAAAABHNzaDo= ssh:";
|
||||||
|
in
|
||||||
{
|
{
|
||||||
programs.git = {
|
home.packages = with pkgs; [ git-ignore ];
|
||||||
enable = true;
|
|
||||||
userName = "Eclypsed";
|
xdg.configFile."git/allowed_signers".text = ''
|
||||||
userEmail = "Ec1ypsed@proton.me";
|
${email} namespaces="git" ${signingKey}
|
||||||
extraConfig = {
|
'';
|
||||||
init = {
|
|
||||||
defaultBranch = "main";
|
programs = {
|
||||||
|
git = {
|
||||||
|
enable = true;
|
||||||
|
settings = {
|
||||||
|
user = { inherit name email; };
|
||||||
|
init = {
|
||||||
|
defaultBranch = "main";
|
||||||
|
};
|
||||||
|
gpg.ssh.allowedSignersFile = "${config.xdg.configHome}/git/allowed_signers";
|
||||||
|
};
|
||||||
|
signing = {
|
||||||
|
format = "ssh";
|
||||||
|
key = "${config.home.homeDirectory}/.ssh/id_ed25519_sk_rk.pub";
|
||||||
|
signByDefault = true;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
lazygit = {
|
||||||
|
enable = true;
|
||||||
|
enableZshIntegration = true;
|
||||||
|
shellWrapperName = "lg";
|
||||||
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
home.packages = with pkgs; [ git-ignore ];
|
|
||||||
}
|
}
|
||||||
|
|||||||
79
modules/home/helix.nix
Normal file
79
modules/home/helix.nix
Normal file
@@ -0,0 +1,79 @@
|
|||||||
|
{
|
||||||
|
pkgs,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
{
|
||||||
|
programs.helix = {
|
||||||
|
enable = true;
|
||||||
|
defaultEditor = true;
|
||||||
|
extraPackages = with pkgs; [
|
||||||
|
basedpyright
|
||||||
|
ruff
|
||||||
|
# pylyzer
|
||||||
|
isort
|
||||||
|
black
|
||||||
|
nixd
|
||||||
|
nixfmt
|
||||||
|
];
|
||||||
|
languages = {
|
||||||
|
language = [
|
||||||
|
{
|
||||||
|
name = "python";
|
||||||
|
language-servers = [
|
||||||
|
"basedpyright"
|
||||||
|
"ruff"
|
||||||
|
# "pylyzer"
|
||||||
|
];
|
||||||
|
auto-format = true;
|
||||||
|
formatter = {
|
||||||
|
command = "bash"; # We have to use bash to call both isort and black
|
||||||
|
args = [
|
||||||
|
"-c"
|
||||||
|
"isort --profile black - | black --quiet --line-length=79 -" # Line length of 79 in accordance with PEP 8
|
||||||
|
];
|
||||||
|
};
|
||||||
|
}
|
||||||
|
{
|
||||||
|
name = "nix";
|
||||||
|
language-servers = [ "nixd" ];
|
||||||
|
auto-format = true;
|
||||||
|
formatter = {
|
||||||
|
command = "nixfmt";
|
||||||
|
};
|
||||||
|
}
|
||||||
|
];
|
||||||
|
language-server = {
|
||||||
|
basedpyright.config.python.analysis = {
|
||||||
|
typeCheckingMode = "strict";
|
||||||
|
};
|
||||||
|
ruff = {
|
||||||
|
command = "ruff";
|
||||||
|
args = [ "server" ];
|
||||||
|
};
|
||||||
|
# pylyzer = {
|
||||||
|
# command = "pylyzer";
|
||||||
|
# args = [ "--server" ];
|
||||||
|
# };
|
||||||
|
nixd = {
|
||||||
|
command = "nixd";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
settings = {
|
||||||
|
editor = {
|
||||||
|
line-number = "relative";
|
||||||
|
cursorline = true;
|
||||||
|
color-modes = true;
|
||||||
|
cursor-shape = {
|
||||||
|
insert = "bar";
|
||||||
|
normal = "block";
|
||||||
|
select = "underline";
|
||||||
|
};
|
||||||
|
indent-guides = {
|
||||||
|
render = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
theme = "catppuccin_mocha";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
10
modules/home/hypr/default.nix
Normal file
10
modules/home/hypr/default.nix
Normal file
@@ -0,0 +1,10 @@
|
|||||||
|
{
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
{
|
||||||
|
imports = [
|
||||||
|
./hyprland.nix
|
||||||
|
./keybinds.nix
|
||||||
|
./monitors.nix
|
||||||
|
];
|
||||||
|
}
|
||||||
62
modules/home/hypr/hyprland.nix
Normal file
62
modules/home/hypr/hyprland.nix
Normal file
@@ -0,0 +1,62 @@
|
|||||||
|
{
|
||||||
|
pkgs,
|
||||||
|
config,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
{
|
||||||
|
home.packages = with pkgs; [
|
||||||
|
hyprpolkitagent
|
||||||
|
];
|
||||||
|
|
||||||
|
wayland.windowManager.hyprland = {
|
||||||
|
enable = true;
|
||||||
|
package = null;
|
||||||
|
portalPackage = null;
|
||||||
|
|
||||||
|
settings = {
|
||||||
|
source = [
|
||||||
|
"${config.xdg.configHome}/hypr/monitors.conf"
|
||||||
|
];
|
||||||
|
|
||||||
|
general = {
|
||||||
|
gaps_in = 5;
|
||||||
|
gaps_out = 10;
|
||||||
|
border_size = 2;
|
||||||
|
"col.active_border" = "rgb(4479A4)";
|
||||||
|
"col.inactive_border" = "rgba(4479A480)";
|
||||||
|
};
|
||||||
|
|
||||||
|
decoration = {
|
||||||
|
rounding = 10;
|
||||||
|
|
||||||
|
active_opacity = 0.95;
|
||||||
|
inactive_opacity = 0.85;
|
||||||
|
fullscreen_opacity = 1.0;
|
||||||
|
|
||||||
|
blur = {
|
||||||
|
enabled = true;
|
||||||
|
size = 8;
|
||||||
|
passes = 3;
|
||||||
|
new_optimizations = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
layerrule = [
|
||||||
|
"blur, waybar" # Add blur to waybar
|
||||||
|
"blurpopups, waybar" # Blur waybar popups too!
|
||||||
|
"ignorealpha 0.2, waybar" # Make it so transparent parts are ignored
|
||||||
|
];
|
||||||
|
|
||||||
|
exec-once = [
|
||||||
|
"systemctl --user enable --now hyprpolkitagent.service"
|
||||||
|
"wpaperd -d"
|
||||||
|
"systemctl enable --user app-com.mitchellh.ghostty.service"
|
||||||
|
];
|
||||||
|
|
||||||
|
env = [
|
||||||
|
"NIXOS_OZONE_WL, 1"
|
||||||
|
"HYPRSHOT_DIR, ${config.xdg.userDirs.extraConfig.XDG_SCREENSHOTS_DIR}"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
79
modules/home/hypr/keybinds.nix
Normal file
79
modules/home/hypr/keybinds.nix
Normal file
@@ -0,0 +1,79 @@
|
|||||||
|
{
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
{
|
||||||
|
wayland.windowManager.hyprland.settings = {
|
||||||
|
exec = "hyprctl dispatch submap global";
|
||||||
|
submap = "global";
|
||||||
|
|
||||||
|
# MY STUFF
|
||||||
|
"$mod" = "SUPER";
|
||||||
|
|
||||||
|
bind = [
|
||||||
|
"$mod, Q, killactive"
|
||||||
|
"$mod, W, exec, ghostty +new-window"
|
||||||
|
"$mod, S, exec, walker"
|
||||||
|
"$mod, Escape, exec, wlogout"
|
||||||
|
|
||||||
|
# Window Movement
|
||||||
|
"$mod, left, movefocus, l"
|
||||||
|
"$mod, right, movefocus, r"
|
||||||
|
"$mod, up, movefocus, u"
|
||||||
|
"$mod, down, movefocus, d"
|
||||||
|
"$mod SHIFT, left, movewindow, l"
|
||||||
|
"$mod SHIFT, right, movewindow, r"
|
||||||
|
"$mod SHIFT, up, movewindow, u"
|
||||||
|
"$mod SHIFT, down, movewindow, d"
|
||||||
|
"$mod CTRL, left, workspace, r-1"
|
||||||
|
"$mod CTRL, right, workspace, r+1"
|
||||||
|
"$mod CTRL SHIFT, left, movetoworkspace, r-1"
|
||||||
|
"$mod CTRL SHIFT, right, movetoworkspace, r+1"
|
||||||
|
|
||||||
|
# Brightness keys
|
||||||
|
", XF86MonBrightnessUp, exec, brightnessctl set 10%+"
|
||||||
|
", XF86MonBrightnessDown, exec, brightnessctl set 10%-"
|
||||||
|
|
||||||
|
# Screenshoting
|
||||||
|
", PRINT, exec, hyprshot -m output --raw | satty --filename -"
|
||||||
|
"$mod, PRINT, exec, hyprshot -m window --raw | satty --filename -"
|
||||||
|
"SHIFT, PRINT, exec, hyprshot -m region --raw | satty --filename -"
|
||||||
|
|
||||||
|
# Media Control Keys
|
||||||
|
", XF86AudioPrev, exec, playerctl previous"
|
||||||
|
", XF86AudioPlay, exec, playerctl play-pause"
|
||||||
|
", XF86AudioNext, exec, playerctl next"
|
||||||
|
", XF86AudioMute, exec, pamixer -t"
|
||||||
|
"ALT, XF86AudioMute, exec, pamixer --default-source -t"
|
||||||
|
]
|
||||||
|
++ (
|
||||||
|
# workspaces
|
||||||
|
# binds $mod + [shift +] {1..9} to [move to] workspace {1..9}
|
||||||
|
builtins.concatLists (
|
||||||
|
builtins.genList (
|
||||||
|
i:
|
||||||
|
let
|
||||||
|
ws = i + 1;
|
||||||
|
in
|
||||||
|
[
|
||||||
|
"$mod, code:1${toString i}, workspace, ${toString ws}"
|
||||||
|
"$mod SHIFT, code:1${toString i}, movetoworkspace, ${toString ws}"
|
||||||
|
]
|
||||||
|
) 9
|
||||||
|
)
|
||||||
|
);
|
||||||
|
|
||||||
|
bindm = [
|
||||||
|
"$mod, mouse:272, movewindow"
|
||||||
|
"$mod, mouse:273, resizewindow"
|
||||||
|
"$mod ALT, mouse:272, resizewindow"
|
||||||
|
];
|
||||||
|
|
||||||
|
binde = [
|
||||||
|
", XF86AudioRaiseVolume, exec, pamixer -i 5"
|
||||||
|
", XF86AudioLowerVolume, exec, pamixer -d 5"
|
||||||
|
"ALT, XF86AudioRaiseVolume, exec, pamixer --default-source -i 5"
|
||||||
|
"ALT, XF86AudioLowerVolume, exec, pamixer --default-source -d 5"
|
||||||
|
|
||||||
|
];
|
||||||
|
};
|
||||||
|
}
|
||||||
19
modules/home/hypr/monitors.nix
Normal file
19
modules/home/hypr/monitors.nix
Normal file
@@ -0,0 +1,19 @@
|
|||||||
|
{
|
||||||
|
inputs,
|
||||||
|
pkgs,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
{
|
||||||
|
imports = [
|
||||||
|
inputs.hyprdynamicmonitors.homeManagerModules.default
|
||||||
|
];
|
||||||
|
|
||||||
|
home.packages = [
|
||||||
|
inputs.hyprdynamicmonitors.packages.${pkgs.stdenv.hostPlatform.system}.default
|
||||||
|
];
|
||||||
|
|
||||||
|
home.hyprdynamicmonitors = {
|
||||||
|
enable = true;
|
||||||
|
installExamples = false;
|
||||||
|
};
|
||||||
|
}
|
||||||
37
modules/home/mango.nix
Normal file
37
modules/home/mango.nix
Normal file
@@ -0,0 +1,37 @@
|
|||||||
|
{
|
||||||
|
inputs,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
{
|
||||||
|
imports = [
|
||||||
|
inputs.mango.hmModules.mango
|
||||||
|
];
|
||||||
|
|
||||||
|
wayland.windowManager.mango = {
|
||||||
|
enable = true;
|
||||||
|
settings = ''
|
||||||
|
bind=SUPER,Return,spawn,alacritty
|
||||||
|
bind=SUPER,s,spawn,rofi -show drun
|
||||||
|
|
||||||
|
bind=SUPER,q,killclient
|
||||||
|
bind=SUPER+SHIFT,r,reload_config
|
||||||
|
|
||||||
|
bind=SUPER,t,setlayout,tile
|
||||||
|
bind=SUPER,v,setlayout,vertical_grid
|
||||||
|
bind=SUPER,c,setlayout,spiral
|
||||||
|
bind=SUPER,x,setlayout,scroller
|
||||||
|
bind=SUPER,n,switch_layout
|
||||||
|
bind=SUPER,a,togglegaps
|
||||||
|
|
||||||
|
bind=SUPER,Up,focusdir,up
|
||||||
|
bind=SUPER,Down,focusdir,down
|
||||||
|
bind=SUPER,Left,focusdir,left
|
||||||
|
bind=SUPER,Right,focusdir,right
|
||||||
|
|
||||||
|
bind=SUPER+SHIFT,Up,exchange_client,up
|
||||||
|
bind=SUPER+SHIFT,Down,exchange_client,down
|
||||||
|
bind=SUPER+SHIFT,Left,exchange_client,left
|
||||||
|
bind=SUPER+SHIFT,Right,exchange_client,right
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -61,9 +61,6 @@
|
|||||||
# Formatting files
|
# Formatting files
|
||||||
formatter.conform-nvim = {
|
formatter.conform-nvim = {
|
||||||
enable = true;
|
enable = true;
|
||||||
setupOpts = {
|
|
||||||
|
|
||||||
};
|
|
||||||
};
|
};
|
||||||
|
|
||||||
binds = {
|
binds = {
|
||||||
@@ -221,6 +218,17 @@
|
|||||||
treesitter.enable = true;
|
treesitter.enable = true;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
rust = {
|
||||||
|
enable = true;
|
||||||
|
# crates = {
|
||||||
|
# enable = true;
|
||||||
|
# };
|
||||||
|
dap.enable = true;
|
||||||
|
format.enable = true;
|
||||||
|
lsp.enable = true;
|
||||||
|
treesitter.enable = true;
|
||||||
|
};
|
||||||
|
|
||||||
tailwind = {
|
tailwind = {
|
||||||
enable = true;
|
enable = true;
|
||||||
lsp.enable = true;
|
lsp.enable = true;
|
||||||
|
|||||||
@@ -9,19 +9,21 @@
|
|||||||
discord
|
discord
|
||||||
sqlitebrowser
|
sqlitebrowser
|
||||||
drawio
|
drawio
|
||||||
bitwarden-desktop
|
|
||||||
|
|
||||||
# Libre Office
|
# Libre Office
|
||||||
libreoffice-qt
|
libreoffice-qt
|
||||||
hunspell
|
hunspell
|
||||||
hunspellDicts.en_US
|
hunspellDicts.en_US
|
||||||
|
|
||||||
# KDE
|
|
||||||
kdePackages.kate
|
|
||||||
|
|
||||||
# CD Stuff
|
# CD Stuff
|
||||||
picard
|
picard
|
||||||
heybrochecklog
|
heybrochecklog
|
||||||
rsgain
|
rsgain
|
||||||
|
|
||||||
|
playerctl
|
||||||
|
pamixer
|
||||||
|
pavucontrol
|
||||||
|
brightnessctl
|
||||||
|
obsidian
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|||||||
17
modules/home/screenshot.nix
Normal file
17
modules/home/screenshot.nix
Normal file
@@ -0,0 +1,17 @@
|
|||||||
|
{
|
||||||
|
pkgs,
|
||||||
|
config,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
{
|
||||||
|
home.packages = with pkgs; [
|
||||||
|
hyprshot
|
||||||
|
satty
|
||||||
|
];
|
||||||
|
|
||||||
|
xdg.configFile."satty/config.toml".text = ''
|
||||||
|
[general]
|
||||||
|
fullscreen = false
|
||||||
|
output-filename = "${config.xdg.userDirs.extraConfig.XDG_SCREENSHOTS_DIR}/%Y-%m-%d_%H:%M:%S.png"
|
||||||
|
'';
|
||||||
|
}
|
||||||
30
modules/home/ssh.nix
Normal file
30
modules/home/ssh.nix
Normal file
@@ -0,0 +1,30 @@
|
|||||||
|
{
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
{
|
||||||
|
programs.ssh = {
|
||||||
|
enable = true;
|
||||||
|
enableDefaultConfig = false;
|
||||||
|
matchBlocks = {
|
||||||
|
"*" = {
|
||||||
|
addKeysToAgent = "yes";
|
||||||
|
identityFile = [ "~/.ssh/id_ed25519_sk_rk" ];
|
||||||
|
};
|
||||||
|
"stu" = {
|
||||||
|
hostname = "stu.cs.jmu.edu";
|
||||||
|
user = "tamassno";
|
||||||
|
localForwards = [
|
||||||
|
{
|
||||||
|
bind.port = 5432;
|
||||||
|
host = {
|
||||||
|
address = "data.cs.jmu.edu";
|
||||||
|
port = 5432;
|
||||||
|
};
|
||||||
|
}
|
||||||
|
];
|
||||||
|
serverAliveCountMax = 5;
|
||||||
|
serverAliveInterval = 60;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
43
modules/home/stylix.nix
Normal file
43
modules/home/stylix.nix
Normal file
@@ -0,0 +1,43 @@
|
|||||||
|
{
|
||||||
|
inputs,
|
||||||
|
pkgs,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
{
|
||||||
|
imports = [
|
||||||
|
inputs.stylix.homeModules.stylix
|
||||||
|
];
|
||||||
|
|
||||||
|
stylix = {
|
||||||
|
enable = true;
|
||||||
|
autoEnable = false;
|
||||||
|
polarity = "dark";
|
||||||
|
base16Scheme = "${pkgs.base16-schemes}/share/themes/catppuccin-mocha.yaml";
|
||||||
|
fonts = {
|
||||||
|
monospace = {
|
||||||
|
name = "FiraCode Nerd Font";
|
||||||
|
package = pkgs.nerd-fonts.fira-code;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
targets = {
|
||||||
|
alacritty.enable = true;
|
||||||
|
ghostty.enable = true;
|
||||||
|
firefox = {
|
||||||
|
enable = true;
|
||||||
|
profileNames = [ "eclypse" ];
|
||||||
|
colorTheme.enable = true;
|
||||||
|
firefoxGnomeTheme.enable = true;
|
||||||
|
};
|
||||||
|
lazygit.enable = true;
|
||||||
|
yazi.enable = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
home.pointerCursor = {
|
||||||
|
enable = true;
|
||||||
|
gtk.enable = true;
|
||||||
|
name = "Catppuccin-Mocha-Dark-Cursors";
|
||||||
|
package = pkgs.catppuccin-cursors.mochaDark;
|
||||||
|
size = 16;
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -17,6 +17,7 @@
|
|||||||
aaron-bond.better-comments
|
aaron-bond.better-comments
|
||||||
yzane.markdown-pdf
|
yzane.markdown-pdf
|
||||||
mechatroner.rainbow-csv
|
mechatroner.rainbow-csv
|
||||||
|
catppuccin.catppuccin-vsc
|
||||||
|
|
||||||
# Remote development
|
# Remote development
|
||||||
ms-vscode-remote.remote-ssh
|
ms-vscode-remote.remote-ssh
|
||||||
@@ -46,6 +47,14 @@
|
|||||||
# General
|
# General
|
||||||
"editor.formatOnSave" = true;
|
"editor.formatOnSave" = true;
|
||||||
"workbench.iconTheme" = "material-icon-theme";
|
"workbench.iconTheme" = "material-icon-theme";
|
||||||
|
"workbench.colorTheme" = "Catppuccin Mocha";
|
||||||
|
"catppuccin.accentColor" = "flamingo";
|
||||||
|
|
||||||
|
# Remote SSH
|
||||||
|
# VSCode attempts to write to ~/.ssh/config for remote ssh connections.
|
||||||
|
# Because ~/.ssh/config is managed with home-manager, it is not writeable.
|
||||||
|
# So we specify a custom ssh config path
|
||||||
|
"remote.SSH.configFile" = "/home/eclypse/.ssh/vscode-config";
|
||||||
|
|
||||||
# Prettier
|
# Prettier
|
||||||
"editor.defaultFormatter" = "esbenp.prettier-vscode";
|
"editor.defaultFormatter" = "esbenp.prettier-vscode";
|
||||||
@@ -85,6 +94,13 @@
|
|||||||
|
|
||||||
# C / C++
|
# C / C++
|
||||||
"C_Cpp.clang_format_style" = "GNU"; # This is really just for cs361, I actually hate the GNU style
|
"C_Cpp.clang_format_style" = "GNU"; # This is really just for cs361, I actually hate the GNU style
|
||||||
|
"C_Cpp.default.cStandard" = "gnu17";
|
||||||
|
"[c]" = {
|
||||||
|
"editor.defaultFormatter" = "ms-vscode.cpptools";
|
||||||
|
};
|
||||||
|
"[cpp]" = {
|
||||||
|
"editor.defaultFormatter" = "ms-vscode.cpptools";
|
||||||
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|||||||
67
modules/home/walker.nix
Normal file
67
modules/home/walker.nix
Normal file
@@ -0,0 +1,67 @@
|
|||||||
|
{
|
||||||
|
inputs,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
{
|
||||||
|
imports = [
|
||||||
|
inputs.walker.homeManagerModules.default
|
||||||
|
];
|
||||||
|
|
||||||
|
programs.walker = {
|
||||||
|
enable = true;
|
||||||
|
runAsService = true;
|
||||||
|
config = {
|
||||||
|
close_when_open = true;
|
||||||
|
click_to_close = true;
|
||||||
|
providers = {
|
||||||
|
default = [ "desktopapplications" ];
|
||||||
|
max_results = 50;
|
||||||
|
prefixes = [
|
||||||
|
{
|
||||||
|
prefix = ";";
|
||||||
|
provider = "providerlist";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
prefix = ">";
|
||||||
|
provider = "runner";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
prefix = "/";
|
||||||
|
provider = "files";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
prefix = ".";
|
||||||
|
provider = "symbols";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
prefix = "!";
|
||||||
|
provider = "todo";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
prefix = "%";
|
||||||
|
provider = "bookmarks";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
prefix = "=";
|
||||||
|
provider = "calc";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
prefix = "@";
|
||||||
|
provider = "websearch";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
prefix = ":";
|
||||||
|
provider = "clipboard";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
prefix = "$";
|
||||||
|
provider = "windows";
|
||||||
|
}
|
||||||
|
];
|
||||||
|
clipboard = {
|
||||||
|
time_format = "%d.%m. - %H:%M"; # format for the clipboard item date
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
25
modules/home/wallpaper.nix
Normal file
25
modules/home/wallpaper.nix
Normal file
@@ -0,0 +1,25 @@
|
|||||||
|
{
|
||||||
|
config,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
let
|
||||||
|
wallpapers = config.xdg.userDirs.extraConfig.XDG_WALLPAPERS_DIR;
|
||||||
|
in
|
||||||
|
{
|
||||||
|
home.file."${wallpapers}" = {
|
||||||
|
source = ../../wallpapers;
|
||||||
|
recursive = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
services.wpaperd = {
|
||||||
|
enable = true;
|
||||||
|
settings = {
|
||||||
|
default = {
|
||||||
|
mode = "center";
|
||||||
|
};
|
||||||
|
any = {
|
||||||
|
path = "${wallpapers}/sunset_bay.jpg";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
422
modules/home/waybar/default.nix
Normal file
422
modules/home/waybar/default.nix
Normal file
@@ -0,0 +1,422 @@
|
|||||||
|
{
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
let
|
||||||
|
hyprland-workspaces = {
|
||||||
|
format = "{icon}";
|
||||||
|
show-special = false;
|
||||||
|
active-only = false;
|
||||||
|
on-click = "activate";
|
||||||
|
on-scroll-up = "hyprctl dispatch workspace e+1";
|
||||||
|
on-scroll-down = "hyprctl dispatch workspace e-1";
|
||||||
|
all-outputs = true;
|
||||||
|
sort-by-number = true;
|
||||||
|
persistent-workspaces = {
|
||||||
|
"1" = [ ];
|
||||||
|
"2" = [ ];
|
||||||
|
"3" = [ ];
|
||||||
|
"4" = [ ];
|
||||||
|
};
|
||||||
|
format-icons = {
|
||||||
|
"1" = " ";
|
||||||
|
"2" = " ";
|
||||||
|
"3" = " ";
|
||||||
|
"4" = " ";
|
||||||
|
"5" = "";
|
||||||
|
"6" = " ";
|
||||||
|
"7" = "";
|
||||||
|
"8" = " ";
|
||||||
|
"9" = " ";
|
||||||
|
"10" = "10";
|
||||||
|
"focused" = "";
|
||||||
|
"default" = "";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
menu = {
|
||||||
|
format = "{}";
|
||||||
|
exec = "echo ; echo app launcher";
|
||||||
|
interval = 86400;
|
||||||
|
tooltip = true;
|
||||||
|
on-click = "walker";
|
||||||
|
};
|
||||||
|
|
||||||
|
hyprland-window = {
|
||||||
|
format = " {title}";
|
||||||
|
max-length = 40;
|
||||||
|
separate-outputs = false;
|
||||||
|
rewrite = {
|
||||||
|
"^.*( — LibreWolf|LibreWolf)$" = " LibreWolf";
|
||||||
|
"(.*) — Mozilla Firefox" = " Firefox";
|
||||||
|
"^.*v( .*|$)" = " Neovim";
|
||||||
|
"^.*~$" = " Kitty";
|
||||||
|
"(.*) " = " Empty";
|
||||||
|
"^.*pdf( .*|$)" = "";
|
||||||
|
"^.*(- Mousepad)$" = " $1";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
cava = {
|
||||||
|
autosens = 1;
|
||||||
|
bars = 15;
|
||||||
|
bar_delimiter = 32; # ASCII for " " (space)
|
||||||
|
format-icons = [
|
||||||
|
"▁"
|
||||||
|
"▂"
|
||||||
|
"▃"
|
||||||
|
"▄"
|
||||||
|
"▅"
|
||||||
|
"▆"
|
||||||
|
"▇"
|
||||||
|
"█"
|
||||||
|
];
|
||||||
|
framerate = 30;
|
||||||
|
input_delay = 2;
|
||||||
|
method = "pipewire";
|
||||||
|
};
|
||||||
|
|
||||||
|
arrow-right = {
|
||||||
|
format = "";
|
||||||
|
tooltip = false;
|
||||||
|
};
|
||||||
|
|
||||||
|
cpu = {
|
||||||
|
format = " {usage}";
|
||||||
|
};
|
||||||
|
|
||||||
|
memory = {
|
||||||
|
interval = 10;
|
||||||
|
format = "{used:0.1f}G ";
|
||||||
|
format-alt = "{percentage}% ";
|
||||||
|
format-alt-click = "click";
|
||||||
|
tooltip = true;
|
||||||
|
tooltip-format = "{used:0.1f}GB/{total:0.1f}G";
|
||||||
|
# on-click-right = "kitty --title btop sh -c 'btop'";
|
||||||
|
};
|
||||||
|
|
||||||
|
temperature = {
|
||||||
|
interval = 10;
|
||||||
|
tooltip = true;
|
||||||
|
hwmon-path = [
|
||||||
|
"/sys/class/hwmon/hwmon6/temp1_input"
|
||||||
|
"/sys/class/thermal/thermal_zone0/temp"
|
||||||
|
];
|
||||||
|
critical-threshold = 82;
|
||||||
|
format-critical = "{temperatureC}°C {icon}";
|
||||||
|
format = "{temperatureC}°C {icon}";
|
||||||
|
format-icons = [ "" ];
|
||||||
|
# on-click-right = "kitty --title nvtop sh -c 'nvtop'";
|
||||||
|
};
|
||||||
|
|
||||||
|
idle-inhibitor = {
|
||||||
|
format = "{icon}";
|
||||||
|
format-icons = {
|
||||||
|
activated = " ";
|
||||||
|
deactivated = " ";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
tray = {
|
||||||
|
icon-size = 16;
|
||||||
|
spacing = 4;
|
||||||
|
};
|
||||||
|
|
||||||
|
pulseaudio = {
|
||||||
|
format = "{icon} {volume}% {format_source}";
|
||||||
|
format-muted = " {format_source}";
|
||||||
|
format-bluetooth = " {icon} {volume}% {format_source}";
|
||||||
|
format-bluetooth-muted = " {format_source}";
|
||||||
|
format-source = " {volume}%";
|
||||||
|
format-source-muted = "";
|
||||||
|
format-icons = {
|
||||||
|
headphone = "";
|
||||||
|
hands-free = "";
|
||||||
|
headset = "";
|
||||||
|
phone = "";
|
||||||
|
portable = "";
|
||||||
|
car = "";
|
||||||
|
default = [
|
||||||
|
""
|
||||||
|
""
|
||||||
|
""
|
||||||
|
""
|
||||||
|
];
|
||||||
|
};
|
||||||
|
scroll-step = 5.0;
|
||||||
|
on-click = "pavucontrol -t 3";
|
||||||
|
on-click-right = "pavucontrol -t 4";
|
||||||
|
tooltip-format = "{icon} {desc} | {volume}%";
|
||||||
|
smooth-scrolling-threshold = 1;
|
||||||
|
};
|
||||||
|
|
||||||
|
wireplumber = {
|
||||||
|
format = "{icon} {volume}% {format_source}";
|
||||||
|
format-muted = " {format_source}";
|
||||||
|
format-source = " {volume}%";
|
||||||
|
format-source-muted = "";
|
||||||
|
format-icons = {
|
||||||
|
headphone = "";
|
||||||
|
hands-free = "";
|
||||||
|
headset = "";
|
||||||
|
phone = "";
|
||||||
|
portable = "";
|
||||||
|
car = "";
|
||||||
|
default = [
|
||||||
|
""
|
||||||
|
""
|
||||||
|
""
|
||||||
|
""
|
||||||
|
];
|
||||||
|
};
|
||||||
|
scroll-step = 5.0;
|
||||||
|
on-click = "pavucontrol -t 3";
|
||||||
|
on-click-right = "pavucontrol -t 4";
|
||||||
|
tooltip-format = "{node_name} {volume}%\n{source_desc} {source_volume}%";
|
||||||
|
};
|
||||||
|
|
||||||
|
backlight = {
|
||||||
|
format = "{icon} {percent}%";
|
||||||
|
format-icons = [
|
||||||
|
""
|
||||||
|
""
|
||||||
|
""
|
||||||
|
""
|
||||||
|
""
|
||||||
|
""
|
||||||
|
""
|
||||||
|
""
|
||||||
|
""
|
||||||
|
];
|
||||||
|
on-scroll-down = "brightnessctl set 10%-";
|
||||||
|
on-scroll-up = "brightnessctl set +10%";
|
||||||
|
tooltip = false;
|
||||||
|
};
|
||||||
|
|
||||||
|
battery = {
|
||||||
|
align = 0;
|
||||||
|
rotate = 0;
|
||||||
|
full-at = 100;
|
||||||
|
design-capacity = false;
|
||||||
|
states = {
|
||||||
|
critical = 20;
|
||||||
|
};
|
||||||
|
format = "{icon} {capacity}%";
|
||||||
|
format-charging = " {capacity}%";
|
||||||
|
format-plugged = " {capacity}%";
|
||||||
|
format-alt-click = "click";
|
||||||
|
format-full = "{icon} Full";
|
||||||
|
format-alt = "{icon} {time}";
|
||||||
|
format-icons = [
|
||||||
|
""
|
||||||
|
""
|
||||||
|
""
|
||||||
|
""
|
||||||
|
""
|
||||||
|
""
|
||||||
|
""
|
||||||
|
""
|
||||||
|
""
|
||||||
|
""
|
||||||
|
""
|
||||||
|
];
|
||||||
|
format-time = "{H}h {M}min";
|
||||||
|
tooltip = true;
|
||||||
|
tooltip-format = "{timeTo} {power}w";
|
||||||
|
};
|
||||||
|
|
||||||
|
mpris = {
|
||||||
|
interval = 10;
|
||||||
|
format = "{player_icon} ";
|
||||||
|
format-paused = "{status_icon}";
|
||||||
|
on-click-middle = "playerctl play-pause";
|
||||||
|
on-click = "playerctl previous";
|
||||||
|
on-click-right = "playerctl next";
|
||||||
|
scroll-step = 5.0;
|
||||||
|
smooth-scrolling-threshold = 1;
|
||||||
|
player-icons = {
|
||||||
|
chromium = "";
|
||||||
|
mpd = "";
|
||||||
|
default = "";
|
||||||
|
firefox = "";
|
||||||
|
kdeconnect = "";
|
||||||
|
mopidy = "";
|
||||||
|
mpv = "";
|
||||||
|
spotify = "";
|
||||||
|
vlc = "";
|
||||||
|
};
|
||||||
|
status-icons = {
|
||||||
|
paused = "";
|
||||||
|
playing = "";
|
||||||
|
stopped = "";
|
||||||
|
};
|
||||||
|
max-length = 10;
|
||||||
|
};
|
||||||
|
|
||||||
|
arrow-left = {
|
||||||
|
format = "";
|
||||||
|
tooltip = false;
|
||||||
|
};
|
||||||
|
|
||||||
|
network = {
|
||||||
|
format-disconnected = " ";
|
||||||
|
format-wifi = " ";
|
||||||
|
format-ethernet = " ";
|
||||||
|
format-linked = " (No IP)";
|
||||||
|
format-disabled = " (Disabled)";
|
||||||
|
tooltip-format = "{essid}: {ipaddr}/{cidr}";
|
||||||
|
};
|
||||||
|
|
||||||
|
notifications = {
|
||||||
|
tooltip = false;
|
||||||
|
format = "{icon} {text}";
|
||||||
|
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 = "swaync-client -t -sw";
|
||||||
|
# on-click-right = "swaync-client -d -sw";
|
||||||
|
escape = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
clock = {
|
||||||
|
interval = 1;
|
||||||
|
format = "{:%I:%M %p}"; # AM-PM Format
|
||||||
|
format-alt = " {:%H:%M %Y, %d %B, %A}";
|
||||||
|
tooltip-format = "<tt><small>{calendar}</small></tt>";
|
||||||
|
calendar = {
|
||||||
|
mode = "year";
|
||||||
|
mode-mon-col = 3;
|
||||||
|
weeks-pos = "right";
|
||||||
|
on-scroll = 1;
|
||||||
|
format = {
|
||||||
|
months = "<span color='#ffead3'><b>{}</b></span>";
|
||||||
|
days = "<span color='#ecc6d9'><b>{}</b></span>";
|
||||||
|
weeks = "<span color='#99ffdd'><b>W{}</b></span>";
|
||||||
|
weekdays = "<span color='#ffcc66'><b>{}</b></span>";
|
||||||
|
today = "<span color='#ff6699'><b><u>{}</u></b></span>";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
power = {
|
||||||
|
format = "⏻";
|
||||||
|
exec = "echo ; echo power";
|
||||||
|
on-click = "wlogout";
|
||||||
|
interval = 86400;
|
||||||
|
tooltip = true;
|
||||||
|
};
|
||||||
|
in
|
||||||
|
{
|
||||||
|
programs.waybar = {
|
||||||
|
enable = true;
|
||||||
|
systemd.enable = true;
|
||||||
|
settings = [
|
||||||
|
{
|
||||||
|
layer = "top";
|
||||||
|
position = "top";
|
||||||
|
height = 34;
|
||||||
|
margin-left = 10;
|
||||||
|
margin-right = 10;
|
||||||
|
margin-top = 10;
|
||||||
|
fixed-center = true;
|
||||||
|
reload_style_on_change = true;
|
||||||
|
|
||||||
|
modules-left = [
|
||||||
|
"custom/menu"
|
||||||
|
"hyprland/window"
|
||||||
|
"cava"
|
||||||
|
"group/info"
|
||||||
|
];
|
||||||
|
|
||||||
|
modules-center = [
|
||||||
|
"hyprland/workspaces#4"
|
||||||
|
];
|
||||||
|
|
||||||
|
modules-right = [
|
||||||
|
"idle_inhibitor"
|
||||||
|
"group/demo"
|
||||||
|
"group/hub"
|
||||||
|
];
|
||||||
|
|
||||||
|
"hyprland/workspaces#4" = hyprland-workspaces;
|
||||||
|
"custom/menu" = menu;
|
||||||
|
"hyprland/window" = hyprland-window;
|
||||||
|
"cava" = cava;
|
||||||
|
"custom/arrow-right" = arrow-right;
|
||||||
|
"cpu" = cpu;
|
||||||
|
"memory" = memory;
|
||||||
|
"temperature" = temperature;
|
||||||
|
"idle_inhibitor" = idle-inhibitor;
|
||||||
|
"tray" = tray;
|
||||||
|
"pulseaudio" = pulseaudio;
|
||||||
|
"network" = network;
|
||||||
|
"wireplumber" = wireplumber;
|
||||||
|
"backlight" = backlight;
|
||||||
|
"mpris" = mpris;
|
||||||
|
"battery" = battery;
|
||||||
|
"custom/arrow-left" = arrow-left;
|
||||||
|
"custom/notifications" = notifications;
|
||||||
|
"clock" = clock;
|
||||||
|
"custom/power" = power;
|
||||||
|
|
||||||
|
"group/info" = {
|
||||||
|
orientation = "inherit";
|
||||||
|
drawer = {
|
||||||
|
transition-duration = 300;
|
||||||
|
transition-left-to-right = false;
|
||||||
|
};
|
||||||
|
modules = [
|
||||||
|
"custom/arrow-right"
|
||||||
|
"cpu"
|
||||||
|
"memory"
|
||||||
|
"temperature"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
|
||||||
|
"group/demo" = {
|
||||||
|
orientation = "inherit";
|
||||||
|
modules = [
|
||||||
|
"tray"
|
||||||
|
"network"
|
||||||
|
"wireplumber"
|
||||||
|
# "pulseaudio"
|
||||||
|
"backlight"
|
||||||
|
"mpris"
|
||||||
|
"battery"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
|
||||||
|
"group/utils" = {
|
||||||
|
orientation = "inherit";
|
||||||
|
drawer = {
|
||||||
|
transition-duration = 300;
|
||||||
|
transition-left-to-right = true;
|
||||||
|
};
|
||||||
|
modules = [
|
||||||
|
"custom/arrow-left"
|
||||||
|
"custom/notifications"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
|
||||||
|
"group/hub" = {
|
||||||
|
orientation = "inherit";
|
||||||
|
modules = [
|
||||||
|
"group/utils"
|
||||||
|
"clock"
|
||||||
|
"custom/power"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
}
|
||||||
|
];
|
||||||
|
style = ./style.css;
|
||||||
|
};
|
||||||
|
}
|
||||||
184
modules/home/waybar/style.css
Normal file
184
modules/home/waybar/style.css
Normal file
@@ -0,0 +1,184 @@
|
|||||||
|
@define-color foreground #BFE3EA;
|
||||||
|
@define-color background alpha(#000007,0.05);
|
||||||
|
@define-color cursor #B98FAE;
|
||||||
|
|
||||||
|
@define-color color0 #000009;
|
||||||
|
@define-color color1 #60697E;
|
||||||
|
@define-color color2 #BA4F80;
|
||||||
|
@define-color color3 #4F7F96;
|
||||||
|
@define-color color4 #BE869D;
|
||||||
|
@define-color color5 #47A6BD;
|
||||||
|
@define-color color6 #49AEC4;
|
||||||
|
@define-color color7 #9BCED9;
|
||||||
|
@define-color color8 #6D9098;
|
||||||
|
@define-color color9 #60697E;
|
||||||
|
@define-color color10 #BA4F80;
|
||||||
|
@define-color color11 #4F7F96;
|
||||||
|
@define-color color12 #BE869D;
|
||||||
|
@define-color color13 #47A6BD;
|
||||||
|
@define-color color14 #49AEC4;
|
||||||
|
@define-color color15 #9BCED9;
|
||||||
|
|
||||||
|
/* ---- 💫 https://github.com/JaKooLit 💫 ---- */
|
||||||
|
/*DARK_PURPLE*/
|
||||||
|
|
||||||
|
@define-color main-color @color15;
|
||||||
|
* {
|
||||||
|
all: unset; /*this is really important to isolate waybar from gtk*/
|
||||||
|
font: bold 14px "FiraCode Nerd Font";
|
||||||
|
font-feature-settings: '"zero", "ss01", "ss02", "ss03", "ss04", "ss05", "cv31"';
|
||||||
|
border: none;
|
||||||
|
|
||||||
|
border-radius: 0;
|
||||||
|
box-shadow: none;
|
||||||
|
text-shadow: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
window#waybar {
|
||||||
|
/*background: alpha(@background, 0.1);*/
|
||||||
|
background: rgba (0, 0, 0, 0.6);
|
||||||
|
border-radius: 5px;
|
||||||
|
/*border: 0px solid alpha(@background,0.8);*/
|
||||||
|
}
|
||||||
|
|
||||||
|
#window {
|
||||||
|
padding: 0px 8px;
|
||||||
|
margin: 5px 4px 5px 4px;
|
||||||
|
background: alpha(@color12, 0.3);
|
||||||
|
border-radius: 5px;
|
||||||
|
color: lighter(@main-color);
|
||||||
|
}
|
||||||
|
|
||||||
|
tooltip {
|
||||||
|
background: alpha(@background, 0.8);
|
||||||
|
border: 2px solid alpha(lighter(@main-color), 0.8);
|
||||||
|
border-radius: 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
tooltip label {
|
||||||
|
color: @freground;
|
||||||
|
}
|
||||||
|
|
||||||
|
#custom-arrow-right {
|
||||||
|
color: @main-color;
|
||||||
|
margin: 0px 4px;
|
||||||
|
}
|
||||||
|
|
||||||
|
#cpu,
|
||||||
|
#memory,
|
||||||
|
#temperature,
|
||||||
|
#disk,
|
||||||
|
#custom-updates {
|
||||||
|
padding: 0px 6px;
|
||||||
|
margin: 6px 4px;
|
||||||
|
background: alpha(darker(@main-color), 0.4);
|
||||||
|
color: @main-color;
|
||||||
|
border-radius: 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
#workspaces {
|
||||||
|
margin: 4px 4px;
|
||||||
|
background: alpha(lighter(@color4), 0.09);
|
||||||
|
border-radius: 5px;
|
||||||
|
}
|
||||||
|
|
||||||
|
#workspaces button {
|
||||||
|
padding: 0px 4px;
|
||||||
|
margin: 0px 0px;
|
||||||
|
color: alpha(@foreground, 0.3);
|
||||||
|
}
|
||||||
|
|
||||||
|
#workspaces button.active {
|
||||||
|
transition: color 0.5s;
|
||||||
|
color: lighter(@main-color);
|
||||||
|
}
|
||||||
|
|
||||||
|
#workspaces button.urgent,
|
||||||
|
#workspaces button:hover {
|
||||||
|
color: @color12;
|
||||||
|
background-color: transparent;
|
||||||
|
}
|
||||||
|
#demo,
|
||||||
|
#control-center {
|
||||||
|
padding: 0px 6px;
|
||||||
|
margin: 4px 2px 4px 2px;
|
||||||
|
color: lighter(@color3);
|
||||||
|
background: alpha(lighter(@main-color), 0.08);
|
||||||
|
border-radius: 5px;
|
||||||
|
}
|
||||||
|
|
||||||
|
#pulseaudio-slider slider {
|
||||||
|
min-height: 0px;
|
||||||
|
min-width: 0px;
|
||||||
|
background-color: transparent;
|
||||||
|
border: none;
|
||||||
|
box-shadow: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
#pulseaudio-slider {
|
||||||
|
margin: 6px;
|
||||||
|
}
|
||||||
|
|
||||||
|
#pulseaudio-slider highlight {
|
||||||
|
border-radius: 8px;
|
||||||
|
background-color: lighter(@main-color);
|
||||||
|
}
|
||||||
|
|
||||||
|
#language {
|
||||||
|
padding: 0px 3px 2px 0px;
|
||||||
|
}
|
||||||
|
|
||||||
|
#custom-arrow-left {
|
||||||
|
color: lighter(@main-color);
|
||||||
|
margin: 0px 4px;
|
||||||
|
}
|
||||||
|
|
||||||
|
#custom-notifications,
|
||||||
|
#custom-weather,
|
||||||
|
#custom-theme-switcher {
|
||||||
|
padding: 0px 8px;
|
||||||
|
margin: 8px 4px;
|
||||||
|
color: @main-color;
|
||||||
|
background: alpha(darker(@main-color), 0.8);
|
||||||
|
border-radius: 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
#tray {
|
||||||
|
padding: 0px 8px;
|
||||||
|
margin: 4px 2px 4px 2px;
|
||||||
|
background: alpha(@color12, 0.3);
|
||||||
|
border-radius: 5px;
|
||||||
|
color: lighter(@main-color);
|
||||||
|
}
|
||||||
|
|
||||||
|
#custom-menu,
|
||||||
|
#custom-power {
|
||||||
|
padding: 0px 10px 0px 6px;
|
||||||
|
margin: 6px 6px 6px 4px;
|
||||||
|
background: alpha(@color12, 0.3);
|
||||||
|
border-radius: 5px;
|
||||||
|
color: lighter(@main-color);
|
||||||
|
}
|
||||||
|
|
||||||
|
#clock {
|
||||||
|
padding: 0px 8px;
|
||||||
|
margin: 5px 2px 5px 4px;
|
||||||
|
background: alpha(@color12, 0.3);
|
||||||
|
border-radius: 5px;
|
||||||
|
color: lighter(@main-color);
|
||||||
|
}
|
||||||
|
|
||||||
|
#power,
|
||||||
|
#bluetooth,
|
||||||
|
#mpd,
|
||||||
|
#pulseaudio,
|
||||||
|
#wireplumber,
|
||||||
|
#battery,
|
||||||
|
#mpris {
|
||||||
|
padding: 4px 4px;
|
||||||
|
color: lighter(@main-color);
|
||||||
|
}
|
||||||
|
|
||||||
|
#battery.critical {
|
||||||
|
color: red;
|
||||||
|
}
|
||||||
111
modules/home/wlogout.nix
Normal file
111
modules/home/wlogout.nix
Normal file
@@ -0,0 +1,111 @@
|
|||||||
|
{
|
||||||
|
config,
|
||||||
|
pkgs,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
{
|
||||||
|
programs.wlogout = {
|
||||||
|
enable = true;
|
||||||
|
layout = [
|
||||||
|
{
|
||||||
|
label = "lock";
|
||||||
|
action = "loginctl lock-session";
|
||||||
|
text = "Lock";
|
||||||
|
keybind = "l";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
label = "hibernate";
|
||||||
|
action = "systemctl hibernate";
|
||||||
|
text = "Hibernate";
|
||||||
|
keybind = "h";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
label = "logout";
|
||||||
|
action = "loginctl terminate-user $USER";
|
||||||
|
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";
|
||||||
|
}
|
||||||
|
];
|
||||||
|
style = with config.lib.stylix.colors.withHashtag; ''
|
||||||
|
* {
|
||||||
|
font-family: "Rubik Light";
|
||||||
|
background-image: none;
|
||||||
|
box-shadow: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
window {
|
||||||
|
background: url("${config.xdg.userDirs.extraConfig.XDG_WALLPAPERS_DIR}/lanterns_of_twilight.png");
|
||||||
|
background-size: cover;
|
||||||
|
}
|
||||||
|
|
||||||
|
button {
|
||||||
|
margin: 10px;
|
||||||
|
border-radius: 20px;
|
||||||
|
border-color: ${base0F};
|
||||||
|
text-decoration-color: ${base0F};
|
||||||
|
color: ${base0F};
|
||||||
|
background-color: alpha(${base01}, 0.5);
|
||||||
|
border-style: solid;
|
||||||
|
border-width: 2px;
|
||||||
|
background-repeat: no-repeat;
|
||||||
|
background-position: center;
|
||||||
|
background-size: 25%;
|
||||||
|
}
|
||||||
|
|
||||||
|
button:focus, button:active, button:hover {
|
||||||
|
background-color: alpha(${base0F}, 0.3);
|
||||||
|
outline-style: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
button:hover {
|
||||||
|
background-size: 27%;
|
||||||
|
}
|
||||||
|
|
||||||
|
button span {
|
||||||
|
font-size: 1.2em;
|
||||||
|
}
|
||||||
|
|
||||||
|
#lock {
|
||||||
|
background-image: url("${pkgs.wlogout}/share/wlogout/assets/lock.svg");
|
||||||
|
}
|
||||||
|
|
||||||
|
#logout {
|
||||||
|
background-image: url("${pkgs.wlogout}/share/wlogout/assets/logout.svg");
|
||||||
|
}
|
||||||
|
|
||||||
|
#suspend {
|
||||||
|
background-image: url("${pkgs.wlogout}/share/wlogout/assets/suspend.svg");
|
||||||
|
}
|
||||||
|
|
||||||
|
#hibernate {
|
||||||
|
background-image: url("${pkgs.wlogout}/share/wlogout/assets/hibernate.svg");
|
||||||
|
}
|
||||||
|
|
||||||
|
#shutdown {
|
||||||
|
background-image: url("${pkgs.wlogout}/share/wlogout/assets/shutdown.svg");
|
||||||
|
}
|
||||||
|
|
||||||
|
#reboot {
|
||||||
|
background-image: url("${pkgs.wlogout}/share/wlogout/assets/reboot.svg");
|
||||||
|
}
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
}
|
||||||
18
modules/home/xdg.nix
Normal file
18
modules/home/xdg.nix
Normal file
@@ -0,0 +1,18 @@
|
|||||||
|
{
|
||||||
|
config,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
{
|
||||||
|
xdg = {
|
||||||
|
enable = true;
|
||||||
|
userDirs = {
|
||||||
|
enable = true;
|
||||||
|
createDirectories = true;
|
||||||
|
extraConfig = {
|
||||||
|
XDG_DEV_DIR = "${config.home.homeDirectory}/Dev";
|
||||||
|
XDG_WALLPAPERS_DIR = "${config.xdg.userDirs.pictures}/Wallpapers";
|
||||||
|
XDG_SCREENSHOTS_DIR = "${config.xdg.userDirs.pictures}/Screenshots";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
10
modules/home/yazi.nix
Normal file
10
modules/home/yazi.nix
Normal file
@@ -0,0 +1,10 @@
|
|||||||
|
{
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
{
|
||||||
|
programs.yazi = {
|
||||||
|
enable = true;
|
||||||
|
enableZshIntegration = true;
|
||||||
|
shellWrapperName = "y";
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -1,4 +1,5 @@
|
|||||||
{
|
{
|
||||||
|
pkgs,
|
||||||
...
|
...
|
||||||
}:
|
}:
|
||||||
{
|
{
|
||||||
@@ -7,13 +8,83 @@
|
|||||||
enable = true;
|
enable = true;
|
||||||
enableZshIntegration = true;
|
enableZshIntegration = true;
|
||||||
};
|
};
|
||||||
|
fastfetch = {
|
||||||
|
enable = true;
|
||||||
|
};
|
||||||
|
starship = {
|
||||||
|
enable = true;
|
||||||
|
enableZshIntegration = true;
|
||||||
|
settings = {
|
||||||
|
add_newline = true;
|
||||||
|
format = pkgs.lib.concatStrings [
|
||||||
|
"[░▒▓](#f38ba8)"
|
||||||
|
"[ ](fg:#1e1e2e bg:#f38ba8)"
|
||||||
|
"[](fg:#f38ba8 bg:#fab387)"
|
||||||
|
"$directory"
|
||||||
|
"[](fg:#fab387 bg:#f9e2af)"
|
||||||
|
"$git_branch"
|
||||||
|
"$git_status"
|
||||||
|
"[](fg:#f9e2af bg:#a6e3a1)"
|
||||||
|
"$nodejs"
|
||||||
|
"$rust"
|
||||||
|
"$golang"
|
||||||
|
"$php"
|
||||||
|
"[](fg:#a6e3a1)"
|
||||||
|
"$line_break"
|
||||||
|
"$character"
|
||||||
|
];
|
||||||
|
directory = {
|
||||||
|
style = "fg:#1e1e2e bg:#fab387";
|
||||||
|
format = "[ $path ]($style)";
|
||||||
|
truncation_length = 3;
|
||||||
|
truncation_symbol = "…/";
|
||||||
|
substitutions = {
|
||||||
|
"Documents" = " ";
|
||||||
|
"Downloads" = " ";
|
||||||
|
"Music" = " ";
|
||||||
|
"Pictures" = " ";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
git_branch = {
|
||||||
|
symbol = "";
|
||||||
|
style = "bg:#f9e2af";
|
||||||
|
format = "[[ $symbol $branch ](fg:#1e1e2e bg:#f9e2af)]($style)";
|
||||||
|
};
|
||||||
|
git_status = {
|
||||||
|
style = "bg:#f9e2af";
|
||||||
|
format = "[[($all_status$ahead_behind )](fg:#1e1e2e bg:#f9e2af)]($style)";
|
||||||
|
};
|
||||||
|
nodejs = {
|
||||||
|
symbol = "";
|
||||||
|
style = "bg:#a6e3a1";
|
||||||
|
format = "[[ $symbol ($version) ](fg:#1e1e2e bg:#a6e3a1)]($style)";
|
||||||
|
};
|
||||||
|
rust = {
|
||||||
|
symbol = "";
|
||||||
|
style = "bg:#a6e3a1";
|
||||||
|
format = ''[[ $symbol ($version) ](fg:#1e1e2e bg:#a6e3a1)]($style)'';
|
||||||
|
};
|
||||||
|
golang = {
|
||||||
|
symbol = "";
|
||||||
|
style = "bg:#a6e3a1";
|
||||||
|
format = "[[ $symbol ($version) ](fg:#1e1e2e bg#a6e3a1)]($style)";
|
||||||
|
};
|
||||||
|
php = {
|
||||||
|
symbol = "";
|
||||||
|
style = "bg:#a6e3a1";
|
||||||
|
format = "[[ $symbol ($version) ](fg:#1e1e2e bg:#a6e3a1)]($style)";
|
||||||
|
};
|
||||||
|
scan_timeout = 100;
|
||||||
|
};
|
||||||
|
};
|
||||||
zsh = {
|
zsh = {
|
||||||
enable = true;
|
enable = true;
|
||||||
enableCompletion = true;
|
enableCompletion = true;
|
||||||
autosuggestion.enable = true;
|
autosuggestion.enable = true;
|
||||||
syntaxHighlighting.enable = true;
|
syntaxHighlighting.enable = true;
|
||||||
sessionVariables = {
|
shellAliases = {
|
||||||
SSH_AUTH_SOCK = "/home/eclypse/.bitwarden-ssh-agent.sock";
|
stu = "ssh stu";
|
||||||
|
ff = "fastfetch";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|||||||
20
modules/system/agenix.nix
Normal file
20
modules/system/agenix.nix
Normal file
@@ -0,0 +1,20 @@
|
|||||||
|
{
|
||||||
|
inputs,
|
||||||
|
pkgs,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
{
|
||||||
|
imports = [
|
||||||
|
inputs.agenix.nixosModules.default
|
||||||
|
];
|
||||||
|
|
||||||
|
environment.systemPackages = [
|
||||||
|
inputs.agenix.packages.${pkgs.stdenv.hostPlatform.system}.default # CLI Tool
|
||||||
|
];
|
||||||
|
|
||||||
|
age.secrets = {
|
||||||
|
tailscale-auth.file = ../../secrets/tailscale-auth.age;
|
||||||
|
eclypsecloud-eclypse.file = ../../secrets/eclypsecloud-eclypse.age;
|
||||||
|
eclypse-password.file = ../../secrets/eclypse-password.age;
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -1,8 +1,10 @@
|
|||||||
{
|
{
|
||||||
|
config,
|
||||||
...
|
...
|
||||||
}:
|
}:
|
||||||
{
|
{
|
||||||
boot = {
|
boot = {
|
||||||
|
extraModulePackages = with config.boot.kernelPackages; [ virtualbox ];
|
||||||
loader = {
|
loader = {
|
||||||
systemd-boot = {
|
systemd-boot = {
|
||||||
enable = true;
|
enable = true;
|
||||||
@@ -10,5 +12,6 @@
|
|||||||
};
|
};
|
||||||
efi.canTouchEfiVariables = true;
|
efi.canTouchEfiVariables = true;
|
||||||
};
|
};
|
||||||
|
kernelParams = [ "kvm.enable_virt_at_load=0" ];
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -3,7 +3,9 @@
|
|||||||
}:
|
}:
|
||||||
{
|
{
|
||||||
imports = [
|
imports = [
|
||||||
|
./agenix.nix
|
||||||
./boot.nix
|
./boot.nix
|
||||||
|
./desktop.nix
|
||||||
./fileSystems.nix
|
./fileSystems.nix
|
||||||
./fonts.nix
|
./fonts.nix
|
||||||
./network.nix
|
./network.nix
|
||||||
@@ -11,6 +13,8 @@
|
|||||||
./security.nix
|
./security.nix
|
||||||
./services.nix
|
./services.nix
|
||||||
./system.nix
|
./system.nix
|
||||||
|
./tailscale.nix
|
||||||
./user.nix
|
./user.nix
|
||||||
|
./virtualisation.nix
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|||||||
55
modules/system/desktop.nix
Normal file
55
modules/system/desktop.nix
Normal file
@@ -0,0 +1,55 @@
|
|||||||
|
{
|
||||||
|
inputs,
|
||||||
|
pkgs,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
let
|
||||||
|
sddm-theme = inputs.silentSDDM.packages.${pkgs.stdenv.hostPlatform.system}.default;
|
||||||
|
in
|
||||||
|
{
|
||||||
|
imports = [
|
||||||
|
inputs.mango.nixosModules.mango
|
||||||
|
];
|
||||||
|
|
||||||
|
programs = {
|
||||||
|
hyprland = {
|
||||||
|
enable = true;
|
||||||
|
package = inputs.hyprland.packages.${pkgs.stdenv.hostPlatform.system}.hyprland;
|
||||||
|
portalPackage =
|
||||||
|
inputs.hyprland.packages.${pkgs.stdenv.hostPlatform.system}.xdg-desktop-portal-hyprland;
|
||||||
|
};
|
||||||
|
mango.enable = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
environment.systemPackages = [
|
||||||
|
sddm-theme
|
||||||
|
sddm-theme.test
|
||||||
|
];
|
||||||
|
|
||||||
|
services.displayManager = {
|
||||||
|
defaultSession = "mango";
|
||||||
|
sddm = {
|
||||||
|
enable = true;
|
||||||
|
package = pkgs.kdePackages.sddm;
|
||||||
|
theme = sddm-theme.pname;
|
||||||
|
extraPackages = sddm-theme.propagatedBuildInputs;
|
||||||
|
settings = {
|
||||||
|
General = {
|
||||||
|
GreeterEnvironment = "QML2_IMPORT_PATH=${sddm-theme}/share/sddm/themes/${sddm-theme.pname}/components/,QT_IM_MODULE=qtvirtualkeyboard";
|
||||||
|
InputMethod = "qtvirtualkeyboard";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
# Enable the KDE Plasma Desktop Environment.
|
||||||
|
# displayManager.sddm.enable = true;
|
||||||
|
# desktopManager.plasma5.enable = true;
|
||||||
|
|
||||||
|
# Enable the System75 Cosmic Desktop Environment
|
||||||
|
# displayManager.cosmic-greeter.enable = true;
|
||||||
|
# desktopManager.cosmic = {
|
||||||
|
# enable = true;
|
||||||
|
# xwayland.enable = true;
|
||||||
|
# };
|
||||||
|
}
|
||||||
45
modules/system/fileSystems.nix
Normal file
45
modules/system/fileSystems.nix
Normal file
@@ -0,0 +1,45 @@
|
|||||||
|
{
|
||||||
|
pkgs,
|
||||||
|
config,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
let
|
||||||
|
automount_opts = [
|
||||||
|
"x-systemd.automount"
|
||||||
|
"x-systemd.idle-timeout=60"
|
||||||
|
"x-systemd.device-timeout=5s"
|
||||||
|
"x-systemd.mount-timeout=5s"
|
||||||
|
"noauto"
|
||||||
|
"user"
|
||||||
|
"users"
|
||||||
|
];
|
||||||
|
in
|
||||||
|
{
|
||||||
|
fileSystems = {
|
||||||
|
"/mnt/EclypseCloud" = {
|
||||||
|
device = "//100.78.212.35/EclypseCloud";
|
||||||
|
fsType = "cifs";
|
||||||
|
options = [
|
||||||
|
"credentials=${config.age.secrets.eclypsecloud-eclypse.path}"
|
||||||
|
"uid=${toString config.users.users.eclypse.uid}"
|
||||||
|
"rw"
|
||||||
|
]
|
||||||
|
++ automount_opts;
|
||||||
|
};
|
||||||
|
"/mnt/Music" = {
|
||||||
|
device = "//100.78.212.35/music";
|
||||||
|
fsType = "cifs";
|
||||||
|
options = [
|
||||||
|
"credentials=${config.age.secrets.eclypsecloud-eclypse.path}"
|
||||||
|
"uid=${toString config.users.users.eclypse.uid}"
|
||||||
|
"rw"
|
||||||
|
]
|
||||||
|
++ automount_opts;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
environment.systemPackages = with pkgs; [
|
||||||
|
cifs-utils
|
||||||
|
# rclone
|
||||||
|
];
|
||||||
|
}
|
||||||
@@ -37,5 +37,8 @@
|
|||||||
vim # Do not forget to add an editor to edit configuration.nix! The Nano editor is also installed by default.
|
vim # Do not forget to add an editor to edit configuration.nix! The Nano editor is also installed by default.
|
||||||
git
|
git
|
||||||
];
|
];
|
||||||
|
variables = {
|
||||||
|
EDITOR = "vim";
|
||||||
|
};
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -2,7 +2,16 @@
|
|||||||
...
|
...
|
||||||
}:
|
}:
|
||||||
{
|
{
|
||||||
|
programs = {
|
||||||
|
yubikey-manager.enable = true;
|
||||||
|
yubikey-touch-detector.enable = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
services = {
|
||||||
|
yubikey-agent.enable = true;
|
||||||
|
};
|
||||||
|
|
||||||
security = {
|
security = {
|
||||||
rtkit.enable = true;
|
rtkit.enable = true;
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
{
|
{
|
||||||
|
pkgs,
|
||||||
...
|
...
|
||||||
}:
|
}:
|
||||||
{
|
{
|
||||||
@@ -14,16 +15,25 @@
|
|||||||
variant = "";
|
variant = "";
|
||||||
};
|
};
|
||||||
|
|
||||||
# Enable touchpad support (enabled default in most desktopManager).
|
|
||||||
# libinput.enable = true;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
# Enable the KDE Plasma Desktop Environment.
|
# Enable touchpad support (enabled default in most desktopManager).
|
||||||
displayManager.sddm.enable = true;
|
libinput.enable = true;
|
||||||
desktopManager.plasma6.enable = true;
|
|
||||||
|
|
||||||
# Enable CUPS to print documents.
|
# Enable CUPS to print documents.
|
||||||
printing.enable = true;
|
printing = {
|
||||||
|
enable = true;
|
||||||
|
drivers = with pkgs; [
|
||||||
|
gutenprint
|
||||||
|
cnijfilter2
|
||||||
|
];
|
||||||
|
};
|
||||||
|
|
||||||
|
avahi = {
|
||||||
|
enable = true;
|
||||||
|
nssmdns4 = true;
|
||||||
|
openFirewall = true;
|
||||||
|
};
|
||||||
|
|
||||||
# Enable sound with pipewire.
|
# Enable sound with pipewire.
|
||||||
pulseaudio.enable = false;
|
pulseaudio.enable = false;
|
||||||
@@ -40,6 +50,8 @@
|
|||||||
# media-session.enable = true;
|
# media-session.enable = true;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
upower.enable = true;
|
||||||
|
|
||||||
# Enable the OpenSSH daemon. (Look into Fail2Ban in the future)
|
# Enable the OpenSSH daemon. (Look into Fail2Ban in the future)
|
||||||
openssh = {
|
openssh = {
|
||||||
enable = true;
|
enable = true;
|
||||||
@@ -50,4 +62,14 @@
|
|||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
hardware = {
|
||||||
|
bluetooth = {
|
||||||
|
enable = true;
|
||||||
|
powerOnBoot = true;
|
||||||
|
};
|
||||||
|
sane = {
|
||||||
|
enable = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -14,11 +14,13 @@
|
|||||||
"https://cache.nixos.org"
|
"https://cache.nixos.org"
|
||||||
"https://nix-community.cachix.org"
|
"https://nix-community.cachix.org"
|
||||||
"https://devenv.cachix.org"
|
"https://devenv.cachix.org"
|
||||||
|
"https://hyprland.cachix.org"
|
||||||
];
|
];
|
||||||
trusted-public-keys = [
|
trusted-public-keys = [
|
||||||
"cache.nixos.org-1:6NCHdD59X431o0gWypbMrAURkbJ16ZPMQFGspcDShjY="
|
"cache.nixos.org-1:6NCHdD59X431o0gWypbMrAURkbJ16ZPMQFGspcDShjY="
|
||||||
"nix-community.cachix.org-1:mB9FSh9qf2dCimDSUo8Zy7bkq5CX+/rkCWyvRCYg3Fs="
|
"nix-community.cachix.org-1:mB9FSh9qf2dCimDSUo8Zy7bkq5CX+/rkCWyvRCYg3Fs="
|
||||||
"devenv.cachix.org-1:w1cLUi8dv3hnoSPGAuibQv+f9TZLr6cv/Hm9XgU50cw="
|
"devenv.cachix.org-1:w1cLUi8dv3hnoSPGAuibQv+f9TZLr6cv/Hm9XgU50cw="
|
||||||
|
"hyprland.cachix.org-1:a7pgxzMz7+chwVL3/pzj6jIBMioiJM7ypFP8PwtkuGc="
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|||||||
31
modules/system/tailscale.nix
Normal file
31
modules/system/tailscale.nix
Normal file
@@ -0,0 +1,31 @@
|
|||||||
|
{
|
||||||
|
config,
|
||||||
|
pkgs,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
{
|
||||||
|
services.tailscale = {
|
||||||
|
enable = true;
|
||||||
|
useRoutingFeatures = "client";
|
||||||
|
authKeyFile = config.age.secrets.tailscale-auth.path;
|
||||||
|
|
||||||
|
# * Only applied if `authKeyFile` is specified
|
||||||
|
extraUpFlags = [
|
||||||
|
"--ssh"
|
||||||
|
"--accept-routes=true"
|
||||||
|
];
|
||||||
|
extraSetFlags = [
|
||||||
|
"--operator=eclypse"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
|
||||||
|
# Taildrop
|
||||||
|
systemd.user.services.taildrop = {
|
||||||
|
description = "Taildrop File Receiver Service";
|
||||||
|
wantedBy = [ "default.target" ];
|
||||||
|
serviceConfig = {
|
||||||
|
Type = "simple";
|
||||||
|
ExecStart = "${pkgs.tailscale}/bin/tailscale file get --verbose --loop %h/Downloads/";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -2,6 +2,7 @@
|
|||||||
inputs,
|
inputs,
|
||||||
pkgs,
|
pkgs,
|
||||||
host,
|
host,
|
||||||
|
config,
|
||||||
...
|
...
|
||||||
}:
|
}:
|
||||||
{
|
{
|
||||||
@@ -21,6 +22,8 @@
|
|||||||
};
|
};
|
||||||
programs.home-manager.enable = true;
|
programs.home-manager.enable = true;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
backupFileExtension = "backup";
|
||||||
};
|
};
|
||||||
|
|
||||||
users.mutableUsers = false;
|
users.mutableUsers = false;
|
||||||
@@ -31,8 +34,10 @@
|
|||||||
extraGroups = [
|
extraGroups = [
|
||||||
"networkmanager"
|
"networkmanager"
|
||||||
"wheel"
|
"wheel"
|
||||||
|
"scanner"
|
||||||
|
"lp"
|
||||||
];
|
];
|
||||||
hashedPassword = "$6$33qMKGMsdYC//e/s$Z2mQCqDOwbP185OVOLsE63hg.orMrBbxR8WHIiZ9dAnNk3jgEsEU218qtgsQsyATvjsyHUPBQjsa/3JmNLoMM0";
|
hashedPasswordFile = config.age.secrets.eclypse-password.path;
|
||||||
shell = pkgs.zsh;
|
shell = pkgs.zsh;
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
19
modules/system/virtualisation.nix
Normal file
19
modules/system/virtualisation.nix
Normal file
@@ -0,0 +1,19 @@
|
|||||||
|
{
|
||||||
|
pkgs,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
{
|
||||||
|
virtualisation = {
|
||||||
|
# virtualbox.host = {
|
||||||
|
# enable = true;
|
||||||
|
# enableExtensionPack = true;
|
||||||
|
# };
|
||||||
|
podman.enable = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
environment.systemPackages = with pkgs; [
|
||||||
|
distrobox
|
||||||
|
];
|
||||||
|
|
||||||
|
users.extraGroups.vboxusers.members = [ "eclypse" ];
|
||||||
|
}
|
||||||
6
secrets/eclypse-password.age
Normal file
6
secrets/eclypse-password.age
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
age-encryption.org/v1
|
||||||
|
-> ssh-ed25519 7p4RPw wZdiee1a8rqdaNA8EVLUJIEue1ldgrk3HgVGhmHpnTQ
|
||||||
|
8VLt5rSvqN+HAHS9JL6hYSj7xVrTtZAcrn5C12it+Fw
|
||||||
|
--- 9oiyRlMDS7PrUyP4SmkgcMZz+/BENDBn9XN+3216OXY
|
||||||
|
<EFBFBD>%<25>v*|<7C>M<EFBFBD>3<EFBFBD>g<EFBFBD>g<EFBFBD>%;F"s<15><><0B> <20>7<EFBFBD>Uj<55>_H<5F><48><1F><>D<EFBFBD>^*B<>nK'
|
||||||
|
v<EFBFBD><EFBFBD>~<7E>`<60>
|
||||||
5
secrets/eclypsecloud-eclypse.age
Normal file
5
secrets/eclypsecloud-eclypse.age
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
age-encryption.org/v1
|
||||||
|
-> ssh-ed25519 7p4RPw dVTohhNu/jjHSNyhw7irzffqzJJFvW0TbkhSmKKrhS8
|
||||||
|
zTc4HaFO3hSYVLM35KwEGUcu2R+JGHIN758FpKKxL5U
|
||||||
|
--- EhTyT6CYdKjAC9yN0kCxx5yW4o27DJteu8YCbVF2Ln4
|
||||||
|
<EFBFBD>ܬ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>}<7D>P<EFBFBD><50>l<EFBFBD><6C>'<27><>,QLג5P<13>SMs<4D><0C><₼<><E282BC>z<EFBFBD><7A><EFBFBD><EFBFBD><EFBFBD>yQ<0C>o<EFBFBD> t[a0<0F><>U<EFBFBD><12>z?R<>"&ߨC<DFA8><43><EFBFBD>l<EFBFBD>
|
||||||
19
secrets/secrets.nix
Normal file
19
secrets/secrets.nix
Normal file
@@ -0,0 +1,19 @@
|
|||||||
|
# This file is NOT imported into the nix configuration, it is just for the agenix CLI
|
||||||
|
let
|
||||||
|
# System public ssh keys (/etc/ssh/)
|
||||||
|
vanta = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIAaDVBJdMDFL8r9NQCbaLe+DPHGhGzRv2N7+7m1/U8DP";
|
||||||
|
in
|
||||||
|
{
|
||||||
|
# Tailscale auth key need to be up to date with a valid auth key in the tailscale
|
||||||
|
# dashboard. Single-use keys expire after a single machine connects, and even
|
||||||
|
# reusable keys expire after 90 days.
|
||||||
|
# Update tailscale-auth.age with `agenix -e tailscale-auth.age -i /path/to/private-ssh-key`
|
||||||
|
# Note: Only devices with the below public keys are allowed to edit tailscale-auth.age
|
||||||
|
"tailscale-auth.age".publicKeys = [ vanta ]; # Devices allowed to join the tailnet;
|
||||||
|
|
||||||
|
# Devices that can connect to EclypseCloud with the eclypse user.
|
||||||
|
"eclypsecloud-eclypse.age".publicKeys = [ vanta ];
|
||||||
|
|
||||||
|
# Devices that have the eclypse user
|
||||||
|
"eclypse-password.age".publicKeys = [ vanta ];
|
||||||
|
}
|
||||||
6
secrets/tailscale-auth.age
Normal file
6
secrets/tailscale-auth.age
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
age-encryption.org/v1
|
||||||
|
-> ssh-ed25519 7p4RPw 7GuZj43+NoyPXf//ZLM99vossbJXOpDQSkBi3w51Wl8
|
||||||
|
FTMjlyml+T87LQffffY2AJL5IhTAJF2QlfFvhvZpvOs
|
||||||
|
--- iONf8B3bUxXtCiv0EAv5QO0ZyhE5A6YfRbcxUr/awFg
|
||||||
|
<EFBFBD><0E><><EFBFBD>Tw<54><77>J`<60>~B
|
||||||
|
<EFBFBD><11>;<3B>lOh<4F><68>{2<>?<3F><>P<EFBFBD><50>F>@m<>o<><6F>c<EFBFBD><1C>~X<>3<EFBFBD>@.g<0E>ھ<EFBFBD>eK<65><18>V7zphS<68><53>د6<D8AF><36>.W<><57>O@F
|
||||||
BIN
wallpapers/sunset_bay.jpg
Executable file
BIN
wallpapers/sunset_bay.jpg
Executable file
Binary file not shown.
|
After Width: | Height: | Size: 826 KiB |
Reference in New Issue
Block a user