From 082590a7622823f4081aecbaf6c574043dcdfe5e Mon Sep 17 00:00:00 2001 From: Madeline Hashcube Date: Sun, 28 Jun 2026 20:46:39 -0500 Subject: [PATCH] add a user for my sister --- flake.nix | 1 + modules/users/hashcube.nix | 2 +- modules/users/sammyg.nix | 29 +++ users/sammyg/catppuccin.nix | 12 + users/sammyg/default.nix | 17 ++ users/sammyg/email.nix | 57 +++++ users/sammyg/files.nix | 13 + users/sammyg/i18n/default.nix | 7 + users/sammyg/i18n/fcitx.nix | 13 + users/sammyg/pkgs/.iolite.nix.kate-swp | Bin 0 -> 108 bytes users/sammyg/pkgs/default.nix | 15 ++ users/sammyg/programs/browser/chromium.nix | 26 ++ users/sammyg/programs/browser/default.nix | 8 + users/sammyg/programs/cli/btop.nix | 5 + users/sammyg/programs/cli/carapace.nix | 10 + users/sammyg/programs/cli/cava.nix | 11 + users/sammyg/programs/cli/default.nix | 17 ++ users/sammyg/programs/cli/direnv.nix | 9 + users/sammyg/programs/cli/fastfetch.nix | 7 + users/sammyg/programs/cli/git.nix | 15 ++ users/sammyg/programs/cli/hyfetch.nix | 16 ++ users/sammyg/programs/cli/jq.nix | 7 + users/sammyg/programs/cli/starship.nix | 39 +++ users/sammyg/programs/cli/tmux.nix | 10 + users/sammyg/programs/cli/zoxide.nix | 12 + users/sammyg/programs/code/default.nix | 6 + users/sammyg/programs/code/vscode.nix | 73 ++++++ users/sammyg/programs/code/zed.nix | 41 +++ users/sammyg/programs/default.nix | 13 + users/sammyg/programs/display/default.nix | 7 + users/sammyg/programs/display/hyprland.nix | 88 +++++++ users/sammyg/programs/display/kde/cursor.nix | 7 + users/sammyg/programs/display/kde/default.nix | 8 + users/sammyg/programs/display/kde/wall.nix | 5 + users/sammyg/programs/display/niri.nix | 235 ++++++++++++++++++ users/sammyg/programs/java.nix | 8 + users/sammyg/programs/kodi.nix | 11 + users/sammyg/programs/nixvim.nix | 78 ++++++ users/sammyg/programs/obs-studio.nix | 12 + users/sammyg/programs/shell/default.nix | 9 + users/sammyg/programs/shell/fish.nix | 19 ++ users/sammyg/programs/shell/nu.nix | 35 +++ users/sammyg/programs/term/alacritty.nix | 10 + users/sammyg/programs/term/default.nix | 7 + users/sammyg/programs/term/ghostty.nix | 14 ++ users/sammyg/programs/term/kitty.nix | 16 ++ users/sammyg/programs/term/wezterm.nix | 11 + users/sammyg/programs/wayland/default.nix | 15 ++ users/sammyg/programs/wayland/fuzzel.nix | 16 ++ users/sammyg/programs/wayland/hyprlock.nix | 7 + users/sammyg/programs/wayland/hyprpaper.nix | 25 ++ users/sammyg/programs/wayland/noctalia.nix | 7 + users/sammyg/programs/wayland/swaylock.nix | 23 ++ users/sammyg/programs/wayland/swaync.nix | 41 +++ users/sammyg/programs/wayland/walker.nix | 28 +++ users/sammyg/programs/wayland/waybar.nix | 210 ++++++++++++++++ users/sammyg/programs/wayland/wleave.nix | 43 ++++ users/sammyg/programs/wayland/wlogout.nix | 33 +++ users/sammyg/programs/wayland/wpaperd.nix | 18 ++ users/sammyg/services/arrpc.nix | 7 + users/sammyg/services/cliphist.nix | 6 + users/sammyg/services/default.nix | 15 ++ users/sammyg/services/hypridle.nix | 29 +++ users/sammyg/services/kdeconnect.nix | 8 + users/sammyg/services/ollama.nix | 8 + users/sammyg/services/playerctld.nix | 5 + users/sammyg/services/swayosd.nix | 7 + users/sammyg/services/syncthing.nix | 21 ++ users/sammyg/services/udiskie.nix | 6 + users/sammyg/theming/cursor.nix | 10 + users/sammyg/theming/default.nix | 9 + users/sammyg/theming/gtk.nix | 22 ++ users/sammyg/theming/qt.nix | 9 + users/sammyg/user.nix | 11 + users/sammyg/xdg.nix | 32 +++ 75 files changed, 1741 insertions(+), 1 deletion(-) create mode 100644 modules/users/sammyg.nix create mode 100644 users/sammyg/catppuccin.nix create mode 100644 users/sammyg/default.nix create mode 100644 users/sammyg/email.nix create mode 100644 users/sammyg/files.nix create mode 100644 users/sammyg/i18n/default.nix create mode 100644 users/sammyg/i18n/fcitx.nix create mode 100644 users/sammyg/pkgs/.iolite.nix.kate-swp create mode 100644 users/sammyg/pkgs/default.nix create mode 100644 users/sammyg/programs/browser/chromium.nix create mode 100644 users/sammyg/programs/browser/default.nix create mode 100644 users/sammyg/programs/cli/btop.nix create mode 100644 users/sammyg/programs/cli/carapace.nix create mode 100644 users/sammyg/programs/cli/cava.nix create mode 100644 users/sammyg/programs/cli/default.nix create mode 100644 users/sammyg/programs/cli/direnv.nix create mode 100644 users/sammyg/programs/cli/fastfetch.nix create mode 100644 users/sammyg/programs/cli/git.nix create mode 100644 users/sammyg/programs/cli/hyfetch.nix create mode 100644 users/sammyg/programs/cli/jq.nix create mode 100644 users/sammyg/programs/cli/starship.nix create mode 100644 users/sammyg/programs/cli/tmux.nix create mode 100644 users/sammyg/programs/cli/zoxide.nix create mode 100644 users/sammyg/programs/code/default.nix create mode 100644 users/sammyg/programs/code/vscode.nix create mode 100644 users/sammyg/programs/code/zed.nix create mode 100644 users/sammyg/programs/default.nix create mode 100644 users/sammyg/programs/display/default.nix create mode 100644 users/sammyg/programs/display/hyprland.nix create mode 100644 users/sammyg/programs/display/kde/cursor.nix create mode 100644 users/sammyg/programs/display/kde/default.nix create mode 100644 users/sammyg/programs/display/kde/wall.nix create mode 100644 users/sammyg/programs/display/niri.nix create mode 100644 users/sammyg/programs/java.nix create mode 100644 users/sammyg/programs/kodi.nix create mode 100644 users/sammyg/programs/nixvim.nix create mode 100644 users/sammyg/programs/obs-studio.nix create mode 100644 users/sammyg/programs/shell/default.nix create mode 100644 users/sammyg/programs/shell/fish.nix create mode 100644 users/sammyg/programs/shell/nu.nix create mode 100644 users/sammyg/programs/term/alacritty.nix create mode 100644 users/sammyg/programs/term/default.nix create mode 100644 users/sammyg/programs/term/ghostty.nix create mode 100644 users/sammyg/programs/term/kitty.nix create mode 100644 users/sammyg/programs/term/wezterm.nix create mode 100644 users/sammyg/programs/wayland/default.nix create mode 100644 users/sammyg/programs/wayland/fuzzel.nix create mode 100644 users/sammyg/programs/wayland/hyprlock.nix create mode 100644 users/sammyg/programs/wayland/hyprpaper.nix create mode 100644 users/sammyg/programs/wayland/noctalia.nix create mode 100644 users/sammyg/programs/wayland/swaylock.nix create mode 100644 users/sammyg/programs/wayland/swaync.nix create mode 100644 users/sammyg/programs/wayland/walker.nix create mode 100644 users/sammyg/programs/wayland/waybar.nix create mode 100644 users/sammyg/programs/wayland/wleave.nix create mode 100644 users/sammyg/programs/wayland/wlogout.nix create mode 100644 users/sammyg/programs/wayland/wpaperd.nix create mode 100644 users/sammyg/services/arrpc.nix create mode 100644 users/sammyg/services/cliphist.nix create mode 100644 users/sammyg/services/default.nix create mode 100644 users/sammyg/services/hypridle.nix create mode 100644 users/sammyg/services/kdeconnect.nix create mode 100644 users/sammyg/services/ollama.nix create mode 100644 users/sammyg/services/playerctld.nix create mode 100644 users/sammyg/services/swayosd.nix create mode 100644 users/sammyg/services/syncthing.nix create mode 100644 users/sammyg/services/udiskie.nix create mode 100644 users/sammyg/theming/cursor.nix create mode 100644 users/sammyg/theming/default.nix create mode 100644 users/sammyg/theming/gtk.nix create mode 100644 users/sammyg/theming/qt.nix create mode 100644 users/sammyg/user.nix create mode 100644 users/sammyg/xdg.nix diff --git a/flake.nix b/flake.nix index 8ed2547..4e39024 100644 --- a/flake.nix +++ b/flake.nix @@ -93,6 +93,7 @@ ./configurations/hosts/prism/configuration.nix ./modules/network/copyparty/prism.nix ./modules/nvidia.nix + ./modules/users/sammyg.nix ] ++ sharedMods; }; slate = nixpkgs.lib.nixosSystem { diff --git a/modules/users/hashcube.nix b/modules/users/hashcube.nix index ffbf374..107eb9e 100644 --- a/modules/users/hashcube.nix +++ b/modules/users/hashcube.nix @@ -30,8 +30,8 @@ inputs.catppuccin.homeModules.catppuccin inputs.nixvim.homeModules.nixvim inputs.walker.homeManagerModules.default - inputs.plasma-manager.homeModules.plasma-manager inputs.noctalia.homeModules.default + inputs.plasma-manager.homeModules.plasma-manager ]; }; } diff --git a/modules/users/sammyg.nix b/modules/users/sammyg.nix new file mode 100644 index 0000000..772bf56 --- /dev/null +++ b/modules/users/sammyg.nix @@ -0,0 +1,29 @@ +{ pkgs, inputs, ... }: +{ + imports = [ + ./. + ]; + + users = { + defaultUserShell = pkgs.nushell; + users.sammyg = { + isNormalUser = true; + description = "Sammy G"; + extraGroups = [ "networkmanager" "wheel" "kvm"]; + shell = pkgs.nushell; + }; + }; + programs.fish.enable = true; + environment.shells = with pkgs; [ + nushell + ]; + home-manager.extraSpecialArgs = { inherit inputs; }; + home-manager.users.sammyg = { + imports = [ + ../../users/sammyg/. + inputs.catppuccin.homeModules.catppuccin + inputs.nixvim.homeModules.nixvim + inputs.plasma-manager.homeModules.plasma-manager + ]; + }; +} diff --git a/users/sammyg/catppuccin.nix b/users/sammyg/catppuccin.nix new file mode 100644 index 0000000..7cf387e --- /dev/null +++ b/users/sammyg/catppuccin.nix @@ -0,0 +1,12 @@ +{ ... }: + +{ + catppuccin = { + autoEnable = true; + enable = true; + accent = "green"; + flavor = "macchiato"; + + waybar.mode = "createLink"; + }; +} diff --git a/users/sammyg/default.nix b/users/sammyg/default.nix new file mode 100644 index 0000000..0114e41 --- /dev/null +++ b/users/sammyg/default.nix @@ -0,0 +1,17 @@ +{ ... }: + +{ + imports = [ + ./programs/. + # ./services/. + # ./i18n/. + ./theming/. + ./pkgs/. + + # ./email.nix + ./user.nix + ./catppuccin.nix + ./files.nix + ./xdg.nix + ]; +} diff --git a/users/sammyg/email.nix b/users/sammyg/email.nix new file mode 100644 index 0000000..36bbab1 --- /dev/null +++ b/users/sammyg/email.nix @@ -0,0 +1,57 @@ +{ inputs, ... }: + +{ + programs.aerc = { + enable = true; + extraConfig = { + general.unsafe-accounts-conf = true; + filters = { + "text/plain" = "colorize"; + "text/html" = "! w3m -I UTF-8 -T text/html"; + }; + }; + }; + accounts.email.accounts = { + hashcube = { + enable = true; + primary = true; + realName = "Madeline Hashcube"; + passwordCommand = "cat /home/hashcube/.protonmail-bridge-password"; + address = "hashcube.dev@proton.me"; + # because git + userName = "hashcube.dev@proton.me"; + flavor = "plain"; + + aerc = { + enable = true; + }; + + # it's local host because of protonmail-bridge + smtp = { + host = "127.0.0.1"; + port = 1025; + tls = { + enable = true; + useStartTls = true; + certificatesFile = "/home/hashcube/cert.pem"; + }; + }; + imap = { + host = "127.0.0.1"; + port = 1143; + tls = { + enable = true; + useStartTls = true; + certificatesFile = "/home/hashcube/cert.pem"; + }; + }; + + }; + }; + /* */ + services.protonmail-bridge = { + enable = true; + package = inputs.protonmail-bridge.packages.x86_64-linux.default; + }; + # */ +} diff --git a/users/sammyg/files.nix b/users/sammyg/files.nix new file mode 100644 index 0000000..d36c665 --- /dev/null +++ b/users/sammyg/files.nix @@ -0,0 +1,13 @@ +{ pkgs, ... }: +{ + home.file = { + ".nushell-modules" = { + source = pkgs.fetchFromGitHub { + owner = "hashcube-dev"; + repo = "nushell-modules"; + rev = "main"; + hash = "sha256-WOiW4cyyNvOqocPbicVqPLP3dSAN2vRXadzIFA4/2M0="; + }; + }; + }; +} diff --git a/users/sammyg/i18n/default.nix b/users/sammyg/i18n/default.nix new file mode 100644 index 0000000..fc9e6eb --- /dev/null +++ b/users/sammyg/i18n/default.nix @@ -0,0 +1,7 @@ +{ ... }: + +{ + imports = [ + # ./fcitx.nix + ]; +} diff --git a/users/sammyg/i18n/fcitx.nix b/users/sammyg/i18n/fcitx.nix new file mode 100644 index 0000000..d30bb6b --- /dev/null +++ b/users/sammyg/i18n/fcitx.nix @@ -0,0 +1,13 @@ +{ pkgs, ... }: + +{ + i18n.inputMethod = { + enable = true; + type = "fcitx5"; + fcitx5 = { + addons = with pkgs; [ + fcitx5-mozc-ut + ]; + }; + }; +} diff --git a/users/sammyg/pkgs/.iolite.nix.kate-swp b/users/sammyg/pkgs/.iolite.nix.kate-swp new file mode 100644 index 0000000000000000000000000000000000000000..57496a2e2a7cabd5eeb970e44e561485ac6b76fe GIT binary patch literal 108 zcmZQzU=Z?7EJ;-eE>A2_aLdd|RWQ;sU|?VnvE9Kea5ll+y{#y`_SD{u?`Hn!Y6=cw lU|`^8U|`^6U|`^K4faIhGM2c)rFj?_72 literal 0 HcmV?d00001 diff --git a/users/sammyg/pkgs/default.nix b/users/sammyg/pkgs/default.nix new file mode 100644 index 0000000..c4646dd --- /dev/null +++ b/users/sammyg/pkgs/default.nix @@ -0,0 +1,15 @@ +{ pkgs, ... }: + +{ + home.packages = with pkgs; [ + wl-clipboard + prusa-slicer + alvr + gimp3 + gnome-disk-utility + system76-keyboard-configurator + itch + supertuxkart + obsidian + ]; +} diff --git a/users/sammyg/programs/browser/chromium.nix b/users/sammyg/programs/browser/chromium.nix new file mode 100644 index 0000000..6920251 --- /dev/null +++ b/users/sammyg/programs/browser/chromium.nix @@ -0,0 +1,26 @@ +{ ... }: + +{ + programs.chromium = { + enable = true; + commandLineArgs = [ + "--enable-features=UseOzonePlatform" + "--ozone-platform=wayland" + ]; + extensions = [ + { id = "ddkjiahejlhfcafbddmgiahcphecmpfh"; } # ublock origin lite + { id = "edibdbjcniadpccecjdfdjjppcpchdlm"; } # idgaf about cookies + { id = "clngdbkpkpeebahjckkjfobafhncgmne"; } # stylus + { id = "ghmbeldphafepmbegfdlkpapadhbakde"; } # proton pass + { id = "dbepggeogbaibhgnhhndojpepiihcmeb"; } # vimium + { id = "cnjifjpddelmedmihgijeibhnjfabmlf"; } # obsidian web clipper + { id = "nffaoalbilbmmfgbnbgppjihopabppdk"; } # video speed controller + { id = "mnjggcdmjocbbbhaepdhchncahnbgone"; } # sponsor block + { id = "enamippconapkdmgfgjchkhakpfinmaj"; } # dearrow + { id = "gebbhagfogifgggkldgodflihgfeippi"; } # youtube dislike + { id = "nblkbiljcjfemkfjnhoobnojjgjdmknf"; } # FUCKING PRONOUNS!! https://youtu.be/i6AJzKkkTJQ?t=65 + { id = "ijcpiojgefnkmcadacmacogglhjdjphj"; } # shinigami eyes + ] + ; + }; +} diff --git a/users/sammyg/programs/browser/default.nix b/users/sammyg/programs/browser/default.nix new file mode 100644 index 0000000..649d04e --- /dev/null +++ b/users/sammyg/programs/browser/default.nix @@ -0,0 +1,8 @@ + +{ ... }: + +{ + imports = [ + ./chromium.nix + ]; +} diff --git a/users/sammyg/programs/cli/btop.nix b/users/sammyg/programs/cli/btop.nix new file mode 100644 index 0000000..722dc22 --- /dev/null +++ b/users/sammyg/programs/cli/btop.nix @@ -0,0 +1,5 @@ +{ ... }: + +{ + programs.btop.enable = true; +} diff --git a/users/sammyg/programs/cli/carapace.nix b/users/sammyg/programs/cli/carapace.nix new file mode 100644 index 0000000..f0c56c1 --- /dev/null +++ b/users/sammyg/programs/cli/carapace.nix @@ -0,0 +1,10 @@ +{ ... }: + +{ + programs.carapace = { + enable = true; + enableBashIntegration = true; + enableFishIntegration = true; + enableNushellIntegration = true; + }; +} diff --git a/users/sammyg/programs/cli/cava.nix b/users/sammyg/programs/cli/cava.nix new file mode 100644 index 0000000..6febeba --- /dev/null +++ b/users/sammyg/programs/cli/cava.nix @@ -0,0 +1,11 @@ +{ ... }: + +{ + catppuccin.cava.transparent = true; + programs.cava = { + enable = true; + settings = { + output.method = "ncurses"; + }; + }; +} diff --git a/users/sammyg/programs/cli/default.nix b/users/sammyg/programs/cli/default.nix new file mode 100644 index 0000000..16f7428 --- /dev/null +++ b/users/sammyg/programs/cli/default.nix @@ -0,0 +1,17 @@ +{ ... }: + +{ + imports = [ + ./carapace.nix + ./cava.nix + ./direnv.nix + ./git.nix + ./hyfetch.nix + ./fastfetch.nix + ./jq.nix + ./starship.nix + ./tmux.nix + ./zoxide.nix + ./btop.nix + ]; +} diff --git a/users/sammyg/programs/cli/direnv.nix b/users/sammyg/programs/cli/direnv.nix new file mode 100644 index 0000000..8c8fffc --- /dev/null +++ b/users/sammyg/programs/cli/direnv.nix @@ -0,0 +1,9 @@ +{ ... }: + +{ + programs.direnv = { + enable = true; + enableBashIntegration = true; + nix-direnv.enable = true; + }; +} diff --git a/users/sammyg/programs/cli/fastfetch.nix b/users/sammyg/programs/cli/fastfetch.nix new file mode 100644 index 0000000..4593f1f --- /dev/null +++ b/users/sammyg/programs/cli/fastfetch.nix @@ -0,0 +1,7 @@ +{ ... }: + +{ + programs.fastfetch = { + enable = true; + }; +} diff --git a/users/sammyg/programs/cli/git.nix b/users/sammyg/programs/cli/git.nix new file mode 100644 index 0000000..023ab89 --- /dev/null +++ b/users/sammyg/programs/cli/git.nix @@ -0,0 +1,15 @@ +{ ... }: + +{ + programs.git = { + enable = true; + settings = { + init.defaultBranch = "main"; + user = { + name = "Sammy G"; + email = "samantha.g.albrecht@gmail.com"; + }; + safe.directory = "/etc/nixos"; + }; + }; +} diff --git a/users/sammyg/programs/cli/hyfetch.nix b/users/sammyg/programs/cli/hyfetch.nix new file mode 100644 index 0000000..75c21af --- /dev/null +++ b/users/sammyg/programs/cli/hyfetch.nix @@ -0,0 +1,16 @@ +{ ... }: + +{ + programs.hyfetch = { + enable = true; + settings = { + preset = "transfeminine"; + mode = "8bit"; + light_dark = "dark"; + lightness = 0.65; + color_align.mode = "horizontal"; + backend = "fastfetch"; + pride_month_disable = false; + }; + }; +} diff --git a/users/sammyg/programs/cli/jq.nix b/users/sammyg/programs/cli/jq.nix new file mode 100644 index 0000000..f28ebe3 --- /dev/null +++ b/users/sammyg/programs/cli/jq.nix @@ -0,0 +1,7 @@ +{ config, pkgs, ... }: + +{ + programs.jq = { + enable = true; + }; +} diff --git a/users/sammyg/programs/cli/starship.nix b/users/sammyg/programs/cli/starship.nix new file mode 100644 index 0000000..0d43f1d --- /dev/null +++ b/users/sammyg/programs/cli/starship.nix @@ -0,0 +1,39 @@ +{ ... }: + +{ + programs.starship = { + enable = true; + settings = { + add_newline = true; + hostname = { + ssh_only = false; + format = "[$hostname](boldpink)"; + }; + username = { + show_always = true; + format = "[$user](boldpink)"; + }; + git_status = { + ahead = "⇡\${count}"; + diverged = "⇕⇡\${ahead_count}⇣\${behind_count}"; + behind = "⇣\${count}"; + }; + git_branch = { + format = "@[$branch(:$remote_branch)]($style)"; + }; + directory = { + format = "[$path]($style)[$read_only]($read_only_style)"; + }; + shell = { + disabled = false; + bash_indicator = "bash"; + fish_indicator = "fish"; + nu_indicator = "nush"; + format = ''[\[$indicator\]]($style)''; + }; + format = '' +[>==| $directory$git_branch( $git_status) >==| $username@$hostname >==| $shell](bold pink) +[>==| |>](bold pink) ''; + }; + }; +} diff --git a/users/sammyg/programs/cli/tmux.nix b/users/sammyg/programs/cli/tmux.nix new file mode 100644 index 0000000..4a10a04 --- /dev/null +++ b/users/sammyg/programs/cli/tmux.nix @@ -0,0 +1,10 @@ +{ ... }: + +{ + programs.tmux = { + enable = true; + clock24 = true; + mouse = true; + keyMode = "vi"; + }; +} diff --git a/users/sammyg/programs/cli/zoxide.nix b/users/sammyg/programs/cli/zoxide.nix new file mode 100644 index 0000000..0958aec --- /dev/null +++ b/users/sammyg/programs/cli/zoxide.nix @@ -0,0 +1,12 @@ +{ ... }: + +{ + programs.zoxide = { + enable = true; + enableFishIntegration = true; + enableNushellIntegration = true; + options = [ + "--cmd cd" + ]; + }; +} diff --git a/users/sammyg/programs/code/default.nix b/users/sammyg/programs/code/default.nix new file mode 100644 index 0000000..fca5958 --- /dev/null +++ b/users/sammyg/programs/code/default.nix @@ -0,0 +1,6 @@ +{ ... }: + +{ + imports = [ + ]; +} diff --git a/users/sammyg/programs/code/vscode.nix b/users/sammyg/programs/code/vscode.nix new file mode 100644 index 0000000..0defe54 --- /dev/null +++ b/users/sammyg/programs/code/vscode.nix @@ -0,0 +1,73 @@ +{ pkgs, ... }: + +{ + catppuccin.vscode.profiles.Default = { + accent = "pink"; + settings = { + boldKeywords = true; + italicComments = true; + italicKeywords = true; + workbenchMode = "default"; + bracketMode = "rainbow"; + extraBordersEnabled = false; + }; + }; + + programs.vscode = { + enable = true; + package = pkgs.vscodium; + profiles.Default = { + extensions = with pkgs.vscode-extensions; [ + vscodevim.vim + bbenoist.nix + arrterian.nix-env-selector + + vscjava.vscode-java-pack + + vscjava.vscode-java-debug + vscjava.vscode-java-dependency + vscjava.vscode-java-test + vscjava.vscode-gradle + vscjava.vscode-maven + redhat.java + + ms-python.python + ms-python.black-formatter + ]; + userSettings = { + "extensions.autoUpdate" = false; + "extensions.autoCheckUpdates" = false; + "extensions.ignoreRecommendations" = true; + "update.mode" = "none"; + "update.showReleaseNotes" = false; + "http.systemCertificates" = false; + "git.autofetch" = true; + "vim.smartRelativeLine" = true; + "java.completion.favoriteStaticMembers" = [ + "org.junit.Assert.*" + "org.junit.Assume.*" + "org.junit.jupiter.api.Assertions.*" + "org.junit.jupiter.api.Assumptions.*" + "org.junit.jupiter.api.DynamicContainer.*" + "org.junit.jupiter.api.DynamicTest.*" + "org.mockito.Mockito.*" + "org.mockito.ArgumentMatchers.*" + "org.mockito.Answers.*" + ]; + "files.autoSave" = "afterDelay"; + "java.completion.matchCase" = "off"; + "git.ignoreMissingGitWarning" = true; + "settingsSync.ignoredSettings" = []; + "redhat.telemetry.enabled" = false; + "chat.commandCenter.enabled" = false; + "editor.fontLigatures" = true; + "git.confirmSync" = false; + "diffEditor.ignoreTrimWhitespace" = false; + "wpilib.autoStartRioLog" = false; + "editor.fontFamily" = "JetBrains Mono"; + "editor.tabSize" = 2; + "java.jdt.ls.java.home" = "${pkgs.jdk}"; + }; + }; + }; +} diff --git a/users/sammyg/programs/code/zed.nix b/users/sammyg/programs/code/zed.nix new file mode 100644 index 0000000..34cfc1d --- /dev/null +++ b/users/sammyg/programs/code/zed.nix @@ -0,0 +1,41 @@ +{ ... }: + +{ + programs.zed-editor = { + enable = true; + extensions = [ + "nix" + "java" + "kotlin" + "discord-presence" + "pylsp" + ]; + userSettings = { + vim_mode = true; + window_decorations = "server"; + theme = { + mode = "system"; + }; + buffer_font_family = "JetBrainsMono Nerd Font Mono"; + buffer_font_features = { + calt = true; + }; + ui_font_family = "JetBrainsMono Nerd Font Mono"; + ui_font_features = { + calt = true; + }; + terminal = { + font_family = "JetBrainsMono Nerd Font Mono"; + font_features = { + calt = true; + }; + }; + tab_size = 2; + vim = { + toggle_relative_line_numbers = true; + }; + hour_format = "hour24"; + load_direnv = "shell_hook"; + }; + }; +} diff --git a/users/sammyg/programs/default.nix b/users/sammyg/programs/default.nix new file mode 100644 index 0000000..f73cf12 --- /dev/null +++ b/users/sammyg/programs/default.nix @@ -0,0 +1,13 @@ +{ ... }: + +{ + imports = [ + ./cli/. + ./display/. + ./term/. + ./shell/. + ./browser/. + + ./nixvim.nix + ]; +} diff --git a/users/sammyg/programs/display/default.nix b/users/sammyg/programs/display/default.nix new file mode 100644 index 0000000..18edd6b --- /dev/null +++ b/users/sammyg/programs/display/default.nix @@ -0,0 +1,7 @@ +{ ... }: + +{ + imports = [ + ./niri.nix + ]; +} diff --git a/users/sammyg/programs/display/hyprland.nix b/users/sammyg/programs/display/hyprland.nix new file mode 100644 index 0000000..c73791e --- /dev/null +++ b/users/sammyg/programs/display/hyprland.nix @@ -0,0 +1,88 @@ +{ ... }: + +{ + wayland.windowManager.hyprland = { + enable = true; + package = null; + extraConfig = '' + monitor = HDMI-A-2, 1920x1200@59.95Hz, 1920x-530, 1, transform, 1 + monitor = HDMI-A-1, 1920x1080@60.00Hz, 0x0, 1 + exec-once = hyprctl hyprpaper reload HDMI-A-2,~/Pictures/wallpaper/wallvert.png + exec-once = hyprctl hyprpaper reload HDMI-A-1,~/Pictures/wallpaper/wallhoriz.png + exec-once = wl-paste --type text --watch cliphist store + exec-once = wl-paste --type image --watch cliphist store + ''; + settings = { + "$mod" = "SUPER"; + input.numlock_by_default = true; + bind = [ + "$mod, T, exec, ghostty" + "$mod, Z, exec, zen" + "$mod, Q, killactive, " + "$mod, N, exec, pkill swaync-client || swaync-client -t -sw" + "$mod, R, exec, nautilus" + "$mod, E, exec, zeditor" + + "$mod+Shift, END, exec, wlogout" + + "$mod, D, fullscreen, 0" + "$mod, F, fullscreen, 1" + + "$mod+Shift, left, movewindow, l" + "$mod+Shift, right, movewindow, r" + "$mod+Shift, up, movewindow, u" + "$mod+Shift, down, movewindow, d" + "$mod, left, movefocus, l" + "$mod, right, movefocus, r" + "$mod, up, movefocus, u" + "$mod, down, movefocus, d" + "$mod, Escape, exec, hyprlock" + + "$mod, 1, exec, bash -c 'hyprctl dispatch workspace $(((($(hyprctl activeworkspace -j | jq -r .id) - 1) / 10) * 10 + 1))'" + "$mod, 2, exec, bash -c 'hyprctl dispatch workspace $(((($(hyprctl activeworkspace -j | jq -r .id) - 1) / 10) * 10 + 2))'" + "$mod, 3, exec, bash -c 'hyprctl dispatch workspace $(((($(hyprctl activeworkspace -j | jq -r .id) - 1) / 10) * 10 + 3))'" + "$mod, 4, exec, bash -c 'hyprctl dispatch workspace $(((($(hyprctl activeworkspace -j | jq -r .id) - 1) / 10) * 10 + 4))'" + "$mod, 5, exec, bash -c 'hyprctl dispatch workspace $(((($(hyprctl activeworkspace -j | jq -r .id) - 1) / 10) * 10 + 5))'" + "$mod, 6, exec, bash -c 'hyprctl dispatch workspace $(((($(hyprctl activeworkspace -j | jq -r .id) - 1) / 10) * 10 + 6))'" + "$mod, 7, exec, bash -c 'hyprctl dispatch workspace $(((($(hyprctl activeworkspace -j | jq -r .id) - 1) / 10) * 10 + 7))'" + "$mod, 8, exec, bash -c 'hyprctl dispatch workspace $(((($(hyprctl activeworkspace -j | jq -r .id) - 1) / 10) * 10 + 8))'" + "$mod, 9, exec, bash -c 'hyprctl dispatch workspace $(((($(hyprctl activeworkspace -j | jq -r .id) - 1) / 10) * 10 + 9))'" + "$mod, 0, exec, bash -c 'hyprctl dispatch workspace $(((($(hyprctl activeworkspace -j | jq -r .id) - 1) / 10) * 10 + 10))'" + "$mod, Page_Down, workspace, -1" + "$mod, Page_Up, workspace, +1" + + "$mod+Shift, 1, exec, bash -c 'hyprctl dispatch movetoworkspace $(((($(hyprctl activeworkspace -j | jq -r .id) - 1) / 10) * 10 + 1))'" + "$mod+Shift, 2, exec, bash -c 'hyprctl dispatch movetoworkspace $(((($(hyprctl activeworkspace -j | jq -r .id) - 1) / 10) * 10 + 2))'" + "$mod+Shift, 3, exec, bash -c 'hyprctl dispatch movetoworkspace $(((($(hyprctl activeworkspace -j | jq -r .id) - 1) / 10) * 10 + 3))'" + "$mod+Shift, 4, exec, bash -c 'hyprctl dispatch movetoworkspace $(((($(hyprctl activeworkspace -j | jq -r .id) - 1) / 10) * 10 + 4))'" + "$mod+Shift, 5, exec, bash -c 'hyprctl dispatch movetoworkspace $(((($(hyprctl activeworkspace -j | jq -r .id) - 1) / 10) * 10 + 5))'" + "$mod+Shift, 6, exec, bash -c 'hyprctl dispatch movetoworkspace $(((($(hyprctl activeworkspace -j | jq -r .id) - 1) / 10) * 10 + 6))'" + "$mod+Shift, 7, exec, bash -c 'hyprctl dispatch movetoworkspace $(((($(hyprctl activeworkspace -j | jq -r .id) - 1) / 10) * 10 + 7))'" + "$mod+Shift, 8, exec, bash -c 'hyprctl dispatch movetoworkspace $(((($(hyprctl activeworkspace -j | jq -r .id) - 1) / 10) * 10 + 8))'" + "$mod+Shift, 9, exec, bash -c 'hyprctl dispatch movetoworkspace $(((($(hyprctl activeworkspace -j | jq -r .id) - 1) / 10) * 10 + 9))'" + "$mod+Shift, 0, exec, bash -c 'hyprctl dispatch movetoworkspace $(((($(hyprctl activeworkspace -j | jq -r .id) - 1) / 10) * 10 + 10))'" + "$mod+Shift, Page_Down, movetoworkspace, -1" + "$mod+Shift, Page_Up, movetoworkspace, +1" + + ",XF86AudioPlay, exec, playerctl play-pause" + ",XF86AudioMute, exec, wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle" + ",XF86AudioRaiseVolume, exec, wpctl set-volume -l 1 @DEFAULT_AUDIO_SINK@ 5%+" + ",XF86AudioLowerVolume, exec, wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%-" + ",Print, exec, grimblast edit" + ]; + binde = [ + "$mod, semicolon, splitratio, -0.05" + "$mod+Shift, semicolon, splitratio, -0.025" + "$mod, apostrophe, splitratio, +0.05" + "$mod+Shift, apostrophe, splitratio, +0.025" + ]; + bindr = [ + "$mod, SUPER_L, exec, pkill fuzzel || fuzzel" + "$mod, V, exec, cliphist list | fuzzel --dmenu | cliphist decode | wl-copy" + ]; + bindm = [ + "Super, mouse:272, resizewindow" + ]; + }; + }; +} diff --git a/users/sammyg/programs/display/kde/cursor.nix b/users/sammyg/programs/display/kde/cursor.nix new file mode 100644 index 0000000..91f8e20 --- /dev/null +++ b/users/sammyg/programs/display/kde/cursor.nix @@ -0,0 +1,7 @@ +{ ... }: + +{ + programs.plasma.workspace.cursor = { + theme = "catppuccin-mocha-pink-cursors"; + }; +} diff --git a/users/sammyg/programs/display/kde/default.nix b/users/sammyg/programs/display/kde/default.nix new file mode 100644 index 0000000..1187e18 --- /dev/null +++ b/users/sammyg/programs/display/kde/default.nix @@ -0,0 +1,8 @@ +{ ... }: + +{ + imports = [ + ./cursor.nix + ./wall.nix + ]; +} diff --git a/users/sammyg/programs/display/kde/wall.nix b/users/sammyg/programs/display/kde/wall.nix new file mode 100644 index 0000000..2f5ecf3 --- /dev/null +++ b/users/sammyg/programs/display/kde/wall.nix @@ -0,0 +1,5 @@ +{ ... }: + +{ + programs.plasma.workspace.wallpaper = "/home/hashcube/Pictures/wallpaper/wallhoriz.png"; +} diff --git a/users/sammyg/programs/display/niri.nix b/users/sammyg/programs/display/niri.nix new file mode 100644 index 0000000..df9e16a --- /dev/null +++ b/users/sammyg/programs/display/niri.nix @@ -0,0 +1,235 @@ +{ + config, + lib, + ... +}: +{ + programs.niri = { + settings = { + hotkey-overlay = { + skip-at-startup = true; + hide-not-bound = true; + }; + clipboard.disable-primary = true; + spawn-at-startup = [ + { command = [ "indicator-sound-switcher" ]; } + ]; + input = { + focus-follows-mouse.enable = true; + keyboard.numlock = true; + warp-mouse-to-focus.enable = true; + }; + + outputs = { + "eDP-1" = { + position = { + x = -1600; + y = 0; + }; + }; + "HDMI-A-1" = { + position = { + x = 0; + y = 0; + }; + }; + "HDMI-A-2" = { + transform = { + rotation = 90; + }; + position = { + x = 1920; + y = -530; + }; + }; + }; + + overview.backdrop-color = "#11111b"; + layout = { + focus-ring = { + active.color = "#f5c2e7"; + inactive.color = "#313244"; + urgent.color = "#f38ba8"; + }; + insert-hint.display.color = "#f5c2e744"; + default-column-width.proportion = 0.5; + always-center-single-column = true; + background-color = "#11111b"; + }; + + prefer-no-csd = true; + binds = + with config.lib.niri.actions; + let + sh = spawn "sh" "-c"; + nu = spawn "nu" "-c"; + term = spawn "xdg-terminal-exec"; + in + { + "Mod+period" = { + hotkey-overlay.title = "Spawn Walker (App Launcher)"; + action = sh ''walker''; + }; + "Mod+N" = { + hotkey-overlay.title = "Open Notifications"; + action = sh ''sleep 0.1 && swaync-client -t -sw''; + }; + "Mod+T" = { + hotkey-overlay.title = "Open A Terminal"; + action = term ''nu''; + }; + "Mod+E" = { + hotkey-overlay.title = "Open Aerc (Email)"; + action = term "aerc"; + }; + "Mod+R" = { + hotkey-overlay.title = "Open Nautilus (Files)"; + action = spawn "nautilus"; + }; + "Mod+Z" = { + hotkey-overlay.title = "Open Zen Browser"; + action = spawn "zen-beta"; + }; + "Mod+B" = { + hotkey-overlay.title = "Hide Waybar"; + action = sh ''pkill -USR1 waybar''; + }; + "Mod+V" = { + hotkey-overlay.title = "View Clipboard history"; + action = sh ''walker -m clipboard''; + }; + "Mod+C" = { + hotkey-overlay.title = "Open Cava"; + action = term "cava"; + }; + "Mod+Shift+C" = + let toys = [ + "cava" + "pipes-rs" + "btop" + "tmatrix" + "fireplace" + ]; in { + hotkey-overlay.title = "Open Terminal Toys Menu"; + action = nu ''echo "${lib.concatStringsSep "\n" toys}" | + walker -dnNH --height 5 | + if $in != "" { xdg-terminal-exec $in }''; + }; + "Mod+Escape" = { + hotkey-overlay.title = "Lock Screen"; + action = spawn "swaylock"; + }; + "Mod+Shift+End" = { + hotkey-overlay.title = "Show Power Options"; + action = spawn "wleave"; + }; + "Mod+slash".action = show-hotkey-overlay; + + "Mod+Shift+Z" = { + hotkey-overlay.title = "Activate Woomer (Magnifying Glass)"; + action = spawn "woomer"; + }; + + "Mod+Q".action = close-window; + "Mod+Up".action = focus-window-or-workspace-up; + "Mod+Down".action = focus-window-or-workspace-down; + "Mod+Left".action = focus-column-or-monitor-left; + "Mod+Right".action = focus-column-or-monitor-right; + "Mod+Shift+Up".action = move-window-up-or-to-workspace-up; + "Mod+Shift+Down".action = move-window-down-or-to-workspace-down; + "Mod+Shift+Left".action = move-column-left-or-to-monitor-left; + "Mod+Shift+Right".action = move-column-right-or-to-monitor-right; + "Mod+Control+Left".action = consume-or-expel-window-left; + "Mod+Control+Right".action = consume-or-expel-window-right; + "Mod+bracketleft".action = focus-column-first; + "Mod+bracketright".action = focus-column-last; + "Mod+Shift+bracketleft".action = move-column-to-first; + "Mod+Shift+bracketright".action = move-column-to-last; + "Mod+Prior".action = focus-workspace-up; + "Mod+Next".action = focus-workspace-down; + "Mod+Shift+Prior".action = move-window-to-workspace-up; + "Mod+Shift+Next".action = move-window-to-workspace-down; + "Mod+Control+Prior".action = move-workspace-up; + "Mod+Control+Next".action = move-workspace-down; + + "Super+P".action = toggle-overview; # For Laptop (I have no clue either) + "Mod+W".action = toggle-overview; + "Mod+Shift+W" = let + # Preset Names + names = [ + "Main" + "Comms" + "Steam" + "Game" + "Eye Candy" + ]; + # If the passed in name is equal to one of these, the + # workspace name will be unset, essentially deleting it + reset = [ + "/delete" + " " + ]; + in { + action = nu ''let title = | + echo "${lib.concatStringsSep "\n" names}" | + walker -dNH --height 5; + + $title in ["${lib.concatStringsSep "\", \"" reset}"] | + if $in { + niri msg action unset-workspace-name + } else { + niri msg action set-workspace-name $title + }''; + hotkey-overlay.title = "Set Workspace Name"; + }; + "Mod+Tab".action = focus-monitor-next; + "Mod+Shift+Tab".action = move-column-to-monitor-next; + + "Mod+Apostrophe".action = set-column-width "+10%"; + "Mod+Semicolon".action = set-column-width "-10%"; + "Mod+Shift+Apostrophe".action = set-column-width "+5%"; + "Mod+Shift+Semicolon".action = set-column-width "-5%"; + "Mod+Control+Apostrophe".action = set-window-height "+10%"; + "Mod+Control+Semicolon".action = set-window-height "-10%"; + "Mod+Control+Shift+Apostrophe".action = set-window-height "+5%"; + "Mod+Control+Shift+Semicolon".action = set-window-height "-5%"; + + "Mod+F".action = maximize-column; + "Mod+D".action = fullscreen-window; + "Mod+S".action = move-window-to-floating; + "Mod+A".action = move-window-to-tiling; + "Mod+X".action = center-visible-columns; + "Mod+Control+F".action = expand-column-to-available-width; + "Mod+L".action = toggle-column-tabbed-display; + "Mod+Print".action.screenshot.show-pointer = false; + + "XF86AudioMute".action = sh ''swayosd-client --output-volume mute-toggle''; + "XF86AudioRaiseVolume".action = sh ''swayosd-client --output-volume raise''; + "XF86AudioLowerVolume".action = sh ''swayosd-client --output-volume lower''; + "XF86MonBrightnessDown".action = sh ''swayosd-client --brightness lower''; + "XF86MonBrightnessUp".action = sh ''swayosd-client --brightness raise''; + "XF86AudioPlay".action = sh ''swayosd-client --playerctl play-pause''; + "XF86AudioPrev".action = sh ''swayosd-client --playerctl prev''; + "XF86AudioNext".action = sh ''swayosd-client --playerctl next''; + }; + window-rules = [ + { + draw-border-with-background = false; + geometry-corner-radius = + let + r = 8.0; + in + { + top-left = r; + top-right = r; + bottom-left = r; + bottom-right = r; + }; + clip-to-geometry = true; + # TODO: Whenever this gets added to the flake, use it + # background-effect.blur = true; + } + ]; + }; + }; +} diff --git a/users/sammyg/programs/java.nix b/users/sammyg/programs/java.nix new file mode 100644 index 0000000..52c006c --- /dev/null +++ b/users/sammyg/programs/java.nix @@ -0,0 +1,8 @@ +{ pkgs, ... }: + +{ + programs.java = { + enable = true; + package = pkgs.jetbrains.jdk; + }; +} diff --git a/users/sammyg/programs/kodi.nix b/users/sammyg/programs/kodi.nix new file mode 100644 index 0000000..a021b87 --- /dev/null +++ b/users/sammyg/programs/kodi.nix @@ -0,0 +1,11 @@ +{ pkgs, ... }: + +{ + programs.kodi = { + enable = true; + package = pkgs.kodi-wayland.withPackages (exts: with exts; [ + youtube + keymap + ]); + }; +} diff --git a/users/sammyg/programs/nixvim.nix b/users/sammyg/programs/nixvim.nix new file mode 100644 index 0000000..e6deac1 --- /dev/null +++ b/users/sammyg/programs/nixvim.nix @@ -0,0 +1,78 @@ +# Note for future Maddie: + +# should I move this into code? +# cause like that's what I do with +# it, but like I also do general text +# editor stuff with it. idk, ok bye i +# love u girlboss slayyy pookie :3 + +{ ... }: + +{ + programs.nixvim = { + nixpkgs.config.allowUnfree = true; + + enable = true; + defaultEditor = true; + + # Enable and configure Packer + plugins = { + neo-tree.enable = true; + web-devicons.enable = true; + + nix.enable = true; + highlight-colors.enable = true; + + # direnv.enable = true; + + lsp = { + enable = true; + servers = { + gopls.enable = true; + nixd.enable = true; + nil_ls = { + enable = true; + }; + pylyzer.enable = true; + rust_analyzer = { + enable = true; + installCargo = true; + installRustc = true; + }; + }; + }; + + cmp.enable = true; + cmp-nvim-lsp.enable = true; + + trouble.enable = true; + + neogit.enable = true; + gitgutter.enable = true; + committia.enable = true; + commentary.enable = true; + gitblame.enable = true; + }; + + opts = { + tabstop = 2; + softtabstop = 2; + shiftwidth = 2; + termguicolors = true; + }; + + extraConfigLua = '' + vim.expandtab = True + vim.wo.relativenumber = true + ''; + + colorschemes = { + catppuccin = { + enable = true; + settings = { + flavour = "mocha"; + }; + }; + }; + }; +} diff --git a/users/sammyg/programs/obs-studio.nix b/users/sammyg/programs/obs-studio.nix new file mode 100644 index 0000000..742acef --- /dev/null +++ b/users/sammyg/programs/obs-studio.nix @@ -0,0 +1,12 @@ +{ pkgs, ...}: + +{ + programs.obs-studio = { + enable = true; + plugins = with pkgs.obs-studio-plugins; [ + wlrobs + obs-backgroundremoval + obs-pipewire-audio-capture + ]; + }; +} diff --git a/users/sammyg/programs/shell/default.nix b/users/sammyg/programs/shell/default.nix new file mode 100644 index 0000000..852fd69 --- /dev/null +++ b/users/sammyg/programs/shell/default.nix @@ -0,0 +1,9 @@ + +{ ... }: + +{ + imports = [ + ./fish.nix + ./nu.nix + ]; +} diff --git a/users/sammyg/programs/shell/fish.nix b/users/sammyg/programs/shell/fish.nix new file mode 100644 index 0000000..4062b5e --- /dev/null +++ b/users/sammyg/programs/shell/fish.nix @@ -0,0 +1,19 @@ +{ pkgs, ... }: + +{ + programs.fish = { + enable = true; + shellInit = '' +set fish_greeting +direnv hook fish | source +zoxide init fish | source + ''; + shellInitLast = "fastfetch"; + plugins = [ + { + name = "tide"; + src = pkgs.fishPlugins.tide.src; + } + ]; + }; +} diff --git a/users/sammyg/programs/shell/nu.nix b/users/sammyg/programs/shell/nu.nix new file mode 100644 index 0000000..c22bf58 --- /dev/null +++ b/users/sammyg/programs/shell/nu.nix @@ -0,0 +1,35 @@ +{ ... }: + +{ + home.shell.enableNushellIntegration = true; + programs.nushell = { + enable = true; + shellAliases = { + "git ass" = "git add"; + }; + environmentVariables = { + EDITOR = "nvim"; + # GDK_BACKEND = "x11"; + NH_FLAKE = "/etc/nixos"; + QT_QPA_PLATFORM = "xcb"; + }; + settings = { + buffer_editor = "nvim"; + show_banner = false; + completions.external = { + enable = true; + max_results = 200; + }; + }; + extraEnv = ''# Extra Env +mkdir $"($nu.cache-dir)" +carapace _carapace nushell | save --force $"($nu.cache-dir)/carapace.nu" + ''; + extraConfig = ''# Extra Config +hyfetch + +source ~/.nushell-modules/mod.nu +source $"($nu.cache-dir)/carapace.nu" + ''; + }; +} diff --git a/users/sammyg/programs/term/alacritty.nix b/users/sammyg/programs/term/alacritty.nix new file mode 100644 index 0000000..fb3801f --- /dev/null +++ b/users/sammyg/programs/term/alacritty.nix @@ -0,0 +1,10 @@ +{ ... }: + +{ + programs.alacritty = { + enable = true; + settings = { + font.normal.family = "IosevkaHashcube Nerd Font Mono"; + }; + }; +} diff --git a/users/sammyg/programs/term/default.nix b/users/sammyg/programs/term/default.nix new file mode 100644 index 0000000..91ccd89 --- /dev/null +++ b/users/sammyg/programs/term/default.nix @@ -0,0 +1,7 @@ +{ ... }: + +{ + imports = [ + ./wezterm.nix + ]; +} diff --git a/users/sammyg/programs/term/ghostty.nix b/users/sammyg/programs/term/ghostty.nix new file mode 100644 index 0000000..922780c --- /dev/null +++ b/users/sammyg/programs/term/ghostty.nix @@ -0,0 +1,14 @@ +{ ... }: + +{ + programs.ghostty = { + enable = true; + enableFishIntegration = true; + enableBashIntegration = true; + settings = { + window-height = 42; + window-width = 93; + # background-opacity = 0.5; + }; + }; +} diff --git a/users/sammyg/programs/term/kitty.nix b/users/sammyg/programs/term/kitty.nix new file mode 100644 index 0000000..7223f23 --- /dev/null +++ b/users/sammyg/programs/term/kitty.nix @@ -0,0 +1,16 @@ +{ pkgs, ... }: + +{ + programs.kitty = { + enable = true; + font = { + name = "IosevkaHashcube Nerd Font Mono"; + package = pkgs.iosevka-hashcube; + }; + settings = { + background_opacity = 0.5; + allow_remote_control = true; + font_features = "IosevkaHashcube Nerd Font Mono -calt +dlig"; + }; + }; +} diff --git a/users/sammyg/programs/term/wezterm.nix b/users/sammyg/programs/term/wezterm.nix new file mode 100644 index 0000000..8da7555 --- /dev/null +++ b/users/sammyg/programs/term/wezterm.nix @@ -0,0 +1,11 @@ +{ lib, ... }: + +{ + programs.wezterm = { + enable = true; + settings = { + font_size = 12; + font = lib.generators.mkLuaInline ''wezterm.font("IosevkaHashcube Nerd Font Mono")''; + }; + }; +} diff --git a/users/sammyg/programs/wayland/default.nix b/users/sammyg/programs/wayland/default.nix new file mode 100644 index 0000000..9fc840c --- /dev/null +++ b/users/sammyg/programs/wayland/default.nix @@ -0,0 +1,15 @@ +{ ... }: + +{ + imports = [ + # ./noctalia.nix + ./wpaperd.nix + # ./hyprpaper.nix + ./swaync.nix + ./waybar.nix + ./wleave.nix + # ./wlogout.nix + ./walker.nix + ./swaylock.nix + ]; +} diff --git a/users/sammyg/programs/wayland/fuzzel.nix b/users/sammyg/programs/wayland/fuzzel.nix new file mode 100644 index 0000000..c3be7d2 --- /dev/null +++ b/users/sammyg/programs/wayland/fuzzel.nix @@ -0,0 +1,16 @@ +{ ... }: + +{ + programs.fuzzel = { + enable = true; + settings = { + main = { + font = "JetBrainsMono Nerd Font Mono"; + icon-theme = "Papirus Dark"; + }; + key-bindings = { + cancel = "Control+g Control+c Control+bracketleft Escape"; + }; + }; + }; +} diff --git a/users/sammyg/programs/wayland/hyprlock.nix b/users/sammyg/programs/wayland/hyprlock.nix new file mode 100644 index 0000000..1ddb38a --- /dev/null +++ b/users/sammyg/programs/wayland/hyprlock.nix @@ -0,0 +1,7 @@ +{ ... }: + +{ + programs.hyprlock = { + enable = true; + }; +} diff --git a/users/sammyg/programs/wayland/hyprpaper.nix b/users/sammyg/programs/wayland/hyprpaper.nix new file mode 100644 index 0000000..4353904 --- /dev/null +++ b/users/sammyg/programs/wayland/hyprpaper.nix @@ -0,0 +1,25 @@ +{ ... }: + +{ + services.hyprpaper = { + enable = true; + settings = { + # preload = [ "/home/hashcube/Pictures/wallpaper/wallhoriz.png" "/home/hashcube/Pictures/wallpaper/wallvert.png" ]; + + wallpaper = [ + { + monitor = "HDMI-A-1"; + path = "/home/hashcube/Pictures/wallpaper/wallhoriz.png"; + } + { + monitor = "HDMI-A-2"; + path = "/home/hashcube/Pictures/wallpaper/wallvert.png"; + } + { + monitor = "eDP-1"; + path = "/home/hashcube/Pictures/wallpaper/wallhoriz.png"; + } + ]; + }; + }; +} diff --git a/users/sammyg/programs/wayland/noctalia.nix b/users/sammyg/programs/wayland/noctalia.nix new file mode 100644 index 0000000..a4b945b --- /dev/null +++ b/users/sammyg/programs/wayland/noctalia.nix @@ -0,0 +1,7 @@ +{ ... }: + +{ + programs.noctalia-shell = { + enable = true; + }; +} diff --git a/users/sammyg/programs/wayland/swaylock.nix b/users/sammyg/programs/wayland/swaylock.nix new file mode 100644 index 0000000..f70cd1a --- /dev/null +++ b/users/sammyg/programs/wayland/swaylock.nix @@ -0,0 +1,23 @@ +{ lib, pkgs, ... }: + +{ + programs.swaylock = { + enable = true; + package = pkgs.swaylock-effects; + settings = { + indicator-idle-visible = true; + font = "IosevkaHashcube Nerd Font Mono"; + + clock = true; + datestr = "%Y-%m-%d"; + timestr = "%H:%M"; + screenshots = true; + effect-blur = "10x10"; + fade-in = 0.25; + ignore-empty-password = true; + key-hl-color = lib.mkForce "#f5c2e7"; + ring-ver-color = lib.mkForce "#cba6f7"; + text-ver-color = lib.mkForce "#cba6f7"; + }; + }; +} diff --git a/users/sammyg/programs/wayland/swaync.nix b/users/sammyg/programs/wayland/swaync.nix new file mode 100644 index 0000000..2c3f88f --- /dev/null +++ b/users/sammyg/programs/wayland/swaync.nix @@ -0,0 +1,41 @@ +{ ... }: +{ + catppuccin.swaync.font = "IosevkaHashcube Nerd Font Mono"; + services.swaync = { + enable = true; + settings = { + positionX = "right"; + positionY = "top"; + layer = "overlay"; + control-center-layer = "top"; + layer-shell = true; + cssPriority = "user"; + control-center-margin-top = 0; + control-center-margin-bottom = 0; + control-center-margin-right = 0; + control-center-margin-left = 0; + notification-2fa-action = true; + notification-inline-replies = true; + notification-icon-size = 64; + notification-body-image-height = 100; + notification-body-image-width = 200; + widgets = [ + "title" + "dnd" + "backlight" + "mpris" + "notifications" + ]; + widget-config = { + mpris = { + autohide = true; + show-album-art = "when-available"; + }; + backlight = { + label = "󰃠"; + device = "radeon_bl1"; + }; + }; + }; + }; +} diff --git a/users/sammyg/programs/wayland/walker.nix b/users/sammyg/programs/wayland/walker.nix new file mode 100644 index 0000000..7801a6e --- /dev/null +++ b/users/sammyg/programs/wayland/walker.nix @@ -0,0 +1,28 @@ +{ ... }: + +{ + programs.walker = { + enable = true; + runAsService = true; + config = { + providers.prefixes = [ + { + prefix = "!"; + provider = "runner"; + } + { + prefix = "?"; + provider = "providerlist"; + } + { + prefix = "="; + provider = "calc"; + } + { + prefix = ":"; + provider = "clipboard"; + } + ]; + }; + }; +} diff --git a/users/sammyg/programs/wayland/waybar.nix b/users/sammyg/programs/wayland/waybar.nix new file mode 100644 index 0000000..be5b255 --- /dev/null +++ b/users/sammyg/programs/wayland/waybar.nix @@ -0,0 +1,210 @@ +{ config, pkgs, inputs, ... }: + +{ + programs.waybar = { + enable = true; + settings = { + mainBar = { + layer = "top"; + position = "top"; + height = 32; + margin-top = 16; + margin-left = 16; + margin-right = 16; + modules-left = [ /*"hyprland/workspaces"*/ "niri/workspaces" ]; + modules-center = [ "clock" ]; + modules-right = [ + "tray" + "idle_inhibitor" + "wireplumber" + "battery" + "custom/notification" + ]; + + idle_inhibitor = { + tooltip = false; + format = "{icon}"; + format-icons = { + activated = "󰅶"; + deactivated = "󰢠"; + }; + }; + + battery = { + interval = 5; + states = { + fine = 50; + warning = 30; + critical = 15; + }; + events = { + on-discharging-critical = '' +notify-send "Your Battery is critically low! Please charge your device" -u critical -a "Battery Warning!" -i battery-caution + ''; + }; + format = "{capacity}%"; + format-charging = "⇡{capacity}%"; + format-discharging = "⇣{capacity}%"; + }; + + clock = { + format = "{:%H:%M}"; + format-alt = "{:%Y-%m-%d}"; + tooltip-format = "{calendar}"; + }; + wireplumber = { + format = "{volume}%"; + format-muted = "{volume}X"; + scroll-step = 1; + }; + "niri/workspaces" = { + format = "{name}"; + }; + /** + "hyprland/workspaces" = { + format = "[{windows}]"; + persistent-workspaces = { + "*" = 10; + }; + "window-rewrite-default" = "-"; + "window-rewrite" = { + "title<.*Zen Browser>" = ""; + "title<.*YouTube.*>" = ""; + "class" = "󰙯"; + "class" = "󰈮"; + "class" = ""; + "class" = "󰑋"; + "class" = "󰠮"; + "class" = "󰓓"; + "class" = ""; + "class" = "󰒱"; + "class" = ""; + "class" = ""; + "class" = ""; + "class" = ""; + "class" = "󰍳"; + "class" = "󰍳"; + "title" = "󰍳"; + "title" = "󰹘"; + "class" = ""; + "class" = "󰍨"; + #"" = ""; + #"" = ""; + }; + }; + //*/ + "custom/notification" = { + tooltip = false; + format = "{} {icon}"; + format-icons = { + notification = "󱅫"; + none = ""; + dnd-notification = ""; + dnd-none = "󰂛"; + inhibited-notification = ""; + inhibited-none = ""; + dnd-inhibited-notification = ""; + dnd-inhibited-none = ""; + }; + return-type = "json"; + exec-if = "which swaync-client"; + exec = "swaync-client -swb"; + on-click = "sleep 0.1 && swaync-client -t -sw"; + on-click-right = "sleep 0.1 && swaync-client -d -sw"; + escape = true; + }; + tray.spacing = 32; + }; + }; + + style = '' +@import "catppuccin.css"; + +* { + font-family: IosevkaHashcube Nerd Font Mono; +} + +#waybar { + background: transparent; + color: @text; +} + +#wireplumber { + color: @mauve; +} + +#custom-notification.dnd-none, +#custom-notification.dnd-notification, +#custom-notification.dnd-inhibited-notification, +#custom-notification.dnd-inhibited-none, +#idle_inhibitor.deactivated, +#wireplumber.muted { + color: @subtext0; + font-style: italic; +} + +#tray { + border-radius: 8px 0px 0px 8px; +} + +#clock { + color: @pink; + border-radius: 8px; +} + +#battery { + color: @sky; +} + +#battery.fine { + color: @yellow; +} + +#battery.warning { + color: @peach; +} + +#battery.critical { + color: @red; + font-weight: bold; +} + +#battery.charging { + color: @green; +} + +#workspaces { + border-radius: 8px; +} + +#workspaces button { + background-color: @surface0; + color: @text; +} + +#workspaces button.active { + background-color: @pink; + color: @base; + font-weight: bold; +} + +#custom-notification { + color: @pink; + border-radius: 0px 8px 8px 0px; +} + +#clock, +#workspaces, +#idle_inhibitor, +#tray, +#custom-notification, +#wireplumber, +#battery { + background-color: @base; + padding: 0.5rem 1rem; +} + + ''; + systemd.enable = true; + }; +} diff --git a/users/sammyg/programs/wayland/wleave.nix b/users/sammyg/programs/wayland/wleave.nix new file mode 100644 index 0000000..41f3b05 --- /dev/null +++ b/users/sammyg/programs/wayland/wleave.nix @@ -0,0 +1,43 @@ +{ pkgs, ... }: + +{ + programs.wleave = { + enable = true; + settings = { + buttons-per-row = "1/2"; + close-on-lost-focus = true; + show-keybinds = true; + no-version-info = true; + buttons = [ + { + label = "lock"; + action = "swaylock"; + text = "Lock"; + keybind = "l"; + icon = "${pkgs.wleave}/share/wleave/icons/lock.svg"; + } + { + label = "reboot"; + action = "systemctl reboot"; + text = "Reboot"; + keybind = "r"; + icon = "${pkgs.wleave}/share/wleave/icons/reboot.svg"; + } + { + label = "shutdown"; + action = "systemctl poweroff"; + text = "Shutdown"; + keybind = "s"; + icon = "${pkgs.wleave}/share/wleave/icons/shutdown.svg"; + } + { + label = "suspend"; + action = "systemctl suspend"; + text = "Suspend"; + keybind = "u"; + icon = "${pkgs.wleave}/share/wleave/icons/suspend.svg"; + } + ]; + }; + }; +} diff --git a/users/sammyg/programs/wayland/wlogout.nix b/users/sammyg/programs/wayland/wlogout.nix new file mode 100644 index 0000000..7eebdef --- /dev/null +++ b/users/sammyg/programs/wayland/wlogout.nix @@ -0,0 +1,33 @@ +{ pkgs, ... }: + +{ + programs.wlogout = { + enable = true; + layout = [ + { + label = "lock"; + action = "swaylock"; + text = "Lock"; + keybind = "l"; + } + { + 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"; + } + ]; + }; +} diff --git a/users/sammyg/programs/wayland/wpaperd.nix b/users/sammyg/programs/wayland/wpaperd.nix new file mode 100644 index 0000000..ecf507f --- /dev/null +++ b/users/sammyg/programs/wayland/wpaperd.nix @@ -0,0 +1,18 @@ +{ ... }: + +{ + services.wpaperd = { + enable = true; + settings = { + HDMI-A-1 = { + path = "/home/hashcube/Pictures/wallpaper/wallhoriz.png"; + }; + HDMI-A-2 = { + path = "/home/hashcube/Pictures/wallpaper/wallvert.png"; + }; + eDP-1 = { + path = "/home/hashcube/Pictures/wallpaper/wallhoriz.png"; + }; + }; + }; +} diff --git a/users/sammyg/services/arrpc.nix b/users/sammyg/services/arrpc.nix new file mode 100644 index 0000000..92df08d --- /dev/null +++ b/users/sammyg/services/arrpc.nix @@ -0,0 +1,7 @@ +{ ... }: + +{ + services.arrpc = { + enable = true; + }; +} diff --git a/users/sammyg/services/cliphist.nix b/users/sammyg/services/cliphist.nix new file mode 100644 index 0000000..0be3bac --- /dev/null +++ b/users/sammyg/services/cliphist.nix @@ -0,0 +1,6 @@ +{ ... }: +{ + services.cliphist = { + enable = true; + }; +} diff --git a/users/sammyg/services/default.nix b/users/sammyg/services/default.nix new file mode 100644 index 0000000..3406f55 --- /dev/null +++ b/users/sammyg/services/default.nix @@ -0,0 +1,15 @@ +{ ... }: + +{ + imports = [ + # ./arrpc.nix + ./cliphist.nix + # ./hypridle.nix + # ./kdeconnect.nix + # ./ollama.nix + # ./syncthing.nix + ./udiskie.nix + ./playerctld.nix + # ./swayosd.nix + ]; +} diff --git a/users/sammyg/services/hypridle.nix b/users/sammyg/services/hypridle.nix new file mode 100644 index 0000000..fb49b9f --- /dev/null +++ b/users/sammyg/services/hypridle.nix @@ -0,0 +1,29 @@ +{ ... }: +{ + services.hypridle = { + enable = true; + settings = { + general = { + after_sleep_cmd = "niri msg action power-on-monitors"; + ignore_dbus_inhibit = false; + lock_cmd = "swaylock"; + }; + + listener = [ + { + timeout = 900; + on-timeout = "swaylock"; + } + { + timeout = 1200; + on-timeout = "niri msg action power-off-monitors"; + on-resume = "niri msg action power-on-monitors"; + } + { + timeout = 1500; + on-timeout = "systemctl suspend"; + } + ]; + }; + }; +} diff --git a/users/sammyg/services/kdeconnect.nix b/users/sammyg/services/kdeconnect.nix new file mode 100644 index 0000000..53be36a --- /dev/null +++ b/users/sammyg/services/kdeconnect.nix @@ -0,0 +1,8 @@ +{ config, pkgs, ... }: + +{ + services.kdeconnect = { + enable = true; + indicator = true; + }; +} diff --git a/users/sammyg/services/ollama.nix b/users/sammyg/services/ollama.nix new file mode 100644 index 0000000..1fbfb2f --- /dev/null +++ b/users/sammyg/services/ollama.nix @@ -0,0 +1,8 @@ +{ ... }: + +{ + services.ollama = { + enable = true; + # acceleration = "cuda"; + }; +} diff --git a/users/sammyg/services/playerctld.nix b/users/sammyg/services/playerctld.nix new file mode 100644 index 0000000..c14670b --- /dev/null +++ b/users/sammyg/services/playerctld.nix @@ -0,0 +1,5 @@ +{ ... }: + +{ + services.playerctld.enable = true; +} diff --git a/users/sammyg/services/swayosd.nix b/users/sammyg/services/swayosd.nix new file mode 100644 index 0000000..1d004df --- /dev/null +++ b/users/sammyg/services/swayosd.nix @@ -0,0 +1,7 @@ +{ ... }: + +{ + services.swayosd = { + enable = true; + }; +} diff --git a/users/sammyg/services/syncthing.nix b/users/sammyg/services/syncthing.nix new file mode 100644 index 0000000..a61f016 --- /dev/null +++ b/users/sammyg/services/syncthing.nix @@ -0,0 +1,21 @@ +{ ... }: + +{ + services.syncthing = { + tray.enable = true; + enable = true; + settings = { + devices = { + "asteria" = { id = "CYVLNX2-N2NNAGL-LDN4SLN-7PP2YGX-EE6TTEF-2OSSEBM-EXUUJRN-63MDKQA"; }; + "iolite" = { id = "UNSVYXA-OZLI6SM-LNE2RY2-HJ5S5XQ-XXGPT4X-63GZXYP-6ODYCEP-7GWCGAZ"; }; + }; + folders = { + "Obsidian Vaults" = { + id = "55pc0-3clci"; + path = "/home/hashcube/Documents/Obsidian Vaults"; + devices = [ "asteria" "iolite" ]; + }; + }; + }; + }; +} diff --git a/users/sammyg/services/udiskie.nix b/users/sammyg/services/udiskie.nix new file mode 100644 index 0000000..f04f9f5 --- /dev/null +++ b/users/sammyg/services/udiskie.nix @@ -0,0 +1,6 @@ +{ config, pkgs, ... }: +{ + services.udiskie = { + enable = true; + }; +} diff --git a/users/sammyg/theming/cursor.nix b/users/sammyg/theming/cursor.nix new file mode 100644 index 0000000..115af29 --- /dev/null +++ b/users/sammyg/theming/cursor.nix @@ -0,0 +1,10 @@ +{ pkgs, ... }: + +{ + home.pointerCursor = { + name = "catppuccin-macchiato-green-cursors"; + package = pkgs.catppuccin-cursors.macchiatoGreen; + gtk.enable = true; + x11.enable = true; + }; +} diff --git a/users/sammyg/theming/default.nix b/users/sammyg/theming/default.nix new file mode 100644 index 0000000..39b24d3 --- /dev/null +++ b/users/sammyg/theming/default.nix @@ -0,0 +1,9 @@ +{ ... }: + +{ + imports = [ + ./cursor.nix + ./gtk.nix + ./qt.nix + ]; +} diff --git a/users/sammyg/theming/gtk.nix b/users/sammyg/theming/gtk.nix new file mode 100644 index 0000000..10b582a --- /dev/null +++ b/users/sammyg/theming/gtk.nix @@ -0,0 +1,22 @@ +{ pkgs, config, ... }: + +{ + gtk = { + gtk4.theme = config.gtk.theme; + enable = true; + font = { + name = "IosevkaHashcube Nerd Font Mono"; + package = pkgs.iosevka-hashcube; + }; + iconTheme = { + name = "Papirus-Dark"; + }; + theme = { + name = "catppuccin-macchiato-green-standard"; + package = pkgs.catppuccin-gtk.override { + variant = "macchiato"; + accents = [ "green" ]; + }; + }; + }; +} diff --git a/users/sammyg/theming/qt.nix b/users/sammyg/theming/qt.nix new file mode 100644 index 0000000..468544c --- /dev/null +++ b/users/sammyg/theming/qt.nix @@ -0,0 +1,9 @@ +{ pkgs, ... }: + +{ + qt = { + enable = true; + platformTheme.name = "kvantum"; + style.name = "kvantum"; + }; +} diff --git a/users/sammyg/user.nix b/users/sammyg/user.nix new file mode 100644 index 0000000..d6c141f --- /dev/null +++ b/users/sammyg/user.nix @@ -0,0 +1,11 @@ +{ ... }: + +{ + home.username = "sammyg"; + home.homeDirectory = "/home/sammyg"; + + home.stateVersion = "24.11"; + + # Let home Manager install and manage itself. + programs.home-manager.enable = true; +} diff --git a/users/sammyg/xdg.nix b/users/sammyg/xdg.nix new file mode 100644 index 0000000..f88689e --- /dev/null +++ b/users/sammyg/xdg.nix @@ -0,0 +1,32 @@ +{ pkgs, ... }: +{ + xdg = { + terminal-exec = { + enable = true; + settings = { + default = [ + "wezterm.desktop" + ]; + }; + }; + portal = { + enable = true; + extraPortals = with pkgs; [ + xdg-desktop-portal-gtk + xdg-desktop-portal-gnome + xdg-desktop-portal-hyprland + ]; + config = { + common.default = "*"; + niri = { + default = [ + "gtk" + "gnome" + ]; + "org.freedesktop.impl.portal.ScreenCast" = [ "gnome" ]; + "org.freedesktop.impl.portal.Screenshot" = [ "gnome" ]; + }; + }; + }; + }; +} -- 2.51.2