From a07bd5fd9b087008f1e8b748a9e60d0a40a098bd Mon Sep 17 00:00:00 2001 From: foxora Date: Thu, 12 Feb 2026 18:53:24 +0000 Subject: [PATCH 01/36] init --- README.md | 83 + flake.lock | 1805 +++++++++++++++++ flake.nix | 92 + homes/aurora/default.nix | 314 +++ homes/modules/de/awww.nix | 10 + homes/modules/de/hyprlock/hypr/theme.conf | 20 + homes/modules/de/hyprlock/hyprlock.nix | 41 + homes/modules/de/rofi/rofi.nix | 17 + homes/modules/de/rofi/theme.rasi | 0 homes/modules/de/waybar/style.css | 165 ++ homes/modules/de/waybar/waybar.nix | 104 + homes/modules/programs/iamb/config.toml | 10 + homes/modules/programs/iamb/iamb.nix | 13 + homes/modules/programs/neovim/init.lua | 69 + .../programs/neovim/lua/lsp/capabilities.lua | 59 + .../programs/neovim/lua/lsp/completion.lua | 88 + .../neovim/lua/lsp/completion.lua.old | 203 ++ .../modules/programs/neovim/lua/lsp/init.lua | 5 + homes/modules/programs/neovim/lua/lsp/lsp.lua | 123 ++ .../neovim/lua/nixCatsUtils/lzUtils.lua | 135 ++ .../programs/neovim/lua/plugins/dressing.lua | 5 + .../programs/neovim/lua/plugins/fyler.lua | 15 + .../programs/neovim/lua/plugins/init.lua | 8 + .../neovim/lua/plugins/mini-hipatterns.lua | 76 + .../programs/neovim/lua/plugins/neocord.lua | 5 + .../programs/neovim/lua/plugins/telescope.lua | 36 + .../neovim/lua/plugins/treesitter.lua | 95 + homes/modules/programs/neovim/nixcats.nix | 213 ++ homes/modules/programs/nixcord.nix | 250 +++ homes/modules/programs/spicetify.nix | 26 + homes/modules/programs/yazi/yazi.nix | 86 + homes/modules/scripts/task-manager.sh | 2 + homes/modules/services/dunst.nix | 33 + .../modules/services/keepassxc/keepassxc.ini | 12 + .../modules/services/keepassxc/keepassxc.nix | 23 + .../services/pulse/client.conf.template | 1 + homes/modules/services/pulse/pulse.nix | 9 + .../wireplumber.conf.d/50-alsa-config.conf | 0 .../services/wireplumber/wireplumber.nix | 8 + homes/modules/shell/fastfetch/fastfetch.nix | 12 + .../modules/shell/fastfetch/themes/laimu.json | 0 homes/modules/shell/programs.nix | 26 + homes/modules/shell/zellij/zellij.nix | 17 + homes/modules/shell/zsh.nix | 86 + homes/modules/themeing/hellwal/hellwal.nix | 20 + .../templates/aurorashell-template.toml | 18 + .../wallust/templates/discord-template.css | 20 + .../wallust/templates/hyprland-template.conf | 18 + .../wallust/templates/imhex-template.theme | 405 ++++ .../wallust/templates/kitty-template.conf | 45 + .../wallust/templates/neovim-template | 18 + .../wallust/templates/spicetify-template.ini | 0 .../wallust/templates/waybar-template.css | 18 + .../wallust/templates/zellij-template.kdl | 45 + homes/modules/themeing/wallust/wallust.nix | 20 + homes/modules/themeing/wallust/wallust.toml | 35 + .../wm/hyprland/hypr/keybinds/virtual.conf | 43 + homes/modules/wm/hyprland/hypr/theme.conf | 19 + .../modules/wm/hyprland/hypr/windowrules.conf | 61 + homes/modules/wm/hyprland/hyprland.nix | 314 +++ homes/modules/wm/river.nix | 83 + homes/modules/wm/sway.nix | 53 + hosts/nixarawrui/default.nix | 371 ++++ hosts/nixarawrui/hardware-configuration.nix | 64 + .../modules/amdgpu-ignore-ctx-privileges.nix | 32 + overlays.nix | 13 + 66 files changed, 6115 insertions(+) create mode 100644 README.md create mode 100644 flake.lock create mode 100644 flake.nix create mode 100644 homes/aurora/default.nix create mode 100644 homes/modules/de/awww.nix create mode 100644 homes/modules/de/hyprlock/hypr/theme.conf create mode 100644 homes/modules/de/hyprlock/hyprlock.nix create mode 100644 homes/modules/de/rofi/rofi.nix create mode 100644 homes/modules/de/rofi/theme.rasi create mode 100644 homes/modules/de/waybar/style.css create mode 100644 homes/modules/de/waybar/waybar.nix create mode 100644 homes/modules/programs/iamb/config.toml create mode 100644 homes/modules/programs/iamb/iamb.nix create mode 100644 homes/modules/programs/neovim/init.lua create mode 100644 homes/modules/programs/neovim/lua/lsp/capabilities.lua create mode 100644 homes/modules/programs/neovim/lua/lsp/completion.lua create mode 100644 homes/modules/programs/neovim/lua/lsp/completion.lua.old create mode 100644 homes/modules/programs/neovim/lua/lsp/init.lua create mode 100644 homes/modules/programs/neovim/lua/lsp/lsp.lua create mode 100644 homes/modules/programs/neovim/lua/nixCatsUtils/lzUtils.lua create mode 100644 homes/modules/programs/neovim/lua/plugins/dressing.lua create mode 100644 homes/modules/programs/neovim/lua/plugins/fyler.lua create mode 100644 homes/modules/programs/neovim/lua/plugins/init.lua create mode 100644 homes/modules/programs/neovim/lua/plugins/mini-hipatterns.lua create mode 100644 homes/modules/programs/neovim/lua/plugins/neocord.lua create mode 100644 homes/modules/programs/neovim/lua/plugins/telescope.lua create mode 100644 homes/modules/programs/neovim/lua/plugins/treesitter.lua create mode 100644 homes/modules/programs/neovim/nixcats.nix create mode 100644 homes/modules/programs/nixcord.nix create mode 100644 homes/modules/programs/spicetify.nix create mode 100644 homes/modules/programs/yazi/yazi.nix create mode 100755 homes/modules/scripts/task-manager.sh create mode 100644 homes/modules/services/dunst.nix create mode 100644 homes/modules/services/keepassxc/keepassxc.ini create mode 100644 homes/modules/services/keepassxc/keepassxc.nix create mode 100644 homes/modules/services/pulse/client.conf.template create mode 100644 homes/modules/services/pulse/pulse.nix create mode 100644 homes/modules/services/wireplumber/config/wireplumber.conf.d/50-alsa-config.conf create mode 100644 homes/modules/services/wireplumber/wireplumber.nix create mode 100644 homes/modules/shell/fastfetch/fastfetch.nix create mode 100644 homes/modules/shell/fastfetch/themes/laimu.json create mode 100644 homes/modules/shell/programs.nix create mode 100644 homes/modules/shell/zellij/zellij.nix create mode 100644 homes/modules/shell/zsh.nix create mode 100644 homes/modules/themeing/hellwal/hellwal.nix create mode 100644 homes/modules/themeing/wallust/templates/aurorashell-template.toml create mode 100644 homes/modules/themeing/wallust/templates/discord-template.css create mode 100644 homes/modules/themeing/wallust/templates/hyprland-template.conf create mode 100644 homes/modules/themeing/wallust/templates/imhex-template.theme create mode 100644 homes/modules/themeing/wallust/templates/kitty-template.conf create mode 100644 homes/modules/themeing/wallust/templates/neovim-template create mode 100644 homes/modules/themeing/wallust/templates/spicetify-template.ini create mode 100644 homes/modules/themeing/wallust/templates/waybar-template.css create mode 100644 homes/modules/themeing/wallust/templates/zellij-template.kdl create mode 100644 homes/modules/themeing/wallust/wallust.nix create mode 100644 homes/modules/themeing/wallust/wallust.toml create mode 100644 homes/modules/wm/hyprland/hypr/keybinds/virtual.conf create mode 100644 homes/modules/wm/hyprland/hypr/theme.conf create mode 100644 homes/modules/wm/hyprland/hypr/windowrules.conf create mode 100644 homes/modules/wm/hyprland/hyprland.nix create mode 100644 homes/modules/wm/river.nix create mode 100644 homes/modules/wm/sway.nix create mode 100644 hosts/nixarawrui/default.nix create mode 100644 hosts/nixarawrui/hardware-configuration.nix create mode 100644 hosts/nixarawrui/modules/amdgpu-ignore-ctx-privileges.nix create mode 100644 overlays.nix diff --git a/README.md b/README.md new file mode 100644 index 0000000..36d887e --- /dev/null +++ b/README.md @@ -0,0 +1,83 @@ +## My NixOS Flake +### Philosophy +> [!TODO] My philosophy has kinda changed since the beginning + +### Repo Structure +Modules are organised into groups (ie "Core"), from here a module is structured as either: +1. a single `.nix` file (ie bluetooth.nix). I do this when I won't implement an alternative +2. a directory (ie `sound`) containing a set of alternative implementations and a `default.nix` +that simply imports one of the implementations. For the `sound` example I currently have it structured +to default to `pipewire.nix`. I haven't made alternatives yet but the idea is that it is HIGHLY likely +I do in future. + +### Security Considerations +###### Hashing +For services where password hashing is done infrequently (ie my forgejo instance with signups disabled) +use argon2 (argon2id) with default `argon2$2$65536$8$50` (typically). Otherwise bcrypt is preferred. + +### TODO +There are a lot of commented `# TODO: ...` items in this repository. +All (most) of my commented directives can be found via this pattern: +```sh +grep -rnE '^\s*(//|#)\s*[A-Z]*:\s*.+$' --exclude-dir=.git 2>/dev/null +``` + +### Random Explanation of Fonts +There are four types of fonts (to my knowledge at least): +1. serif (funny squigles / small elegant strokes included) +2. sans-serif (meaning "without serifs") +3. monospace (all glyphs are of a uniform size) +4. emoji (cute lil faces) + +Fun fact: on Android, the emojis you are seeing are part of the noto-emoji font :) + +For finding a font for programming I highly recommend trying https://www.codingfont.com/ + + +### Links +#### Inspiration +##### Explaining my Vision with r/unixporn posts +I want the side panel from https://www.reddit.com/r/unixporn/comments/12wpvyf/hyprland_eww_is_all_i_need/ +but not the colour scheme and I'm 50/50 on the bar being on th eleft side lol. Also I love the volume bar on the right! + +https://www.reddit.com/r/unixporn/comments/12uy6q6/hyprland_first_time_trying_a_wm_ended_up/ +I love love love their rofi theme, everything else is eh (except the background switching is cool) + +https://www.reddit.com/r/unixporn/comments/1avnfjn/hyprland_animations_theme_generation_settings/ +I love their settings apps + +https://www.reddit.com/r/unixporn/comments/u7vgej/desktop_endeavouros_gnome_42/ +I like to imagine they have the ability to have nothing but apps on their screen (like a do not disturb / focus mode) + +https://www.reddit.com/r/unixporn/comments/xkvmhy/hyprland_dreamy/ +Their window decorations and bar are great, also being able to hide everything upwards is so cool + +https://www.reddit.com/r/unixporn/comments/vkcasz/i3gaps_i_prefer_light_mode/ +If their colour scheme was a little less white I'd love it but overall one of my favourites every + +##### Other Inspiring Shtuff +1. https://github.com/sabrehagen/desktop-environment + +#### Wallpaper Sources +1. https://www.wallpaperflare.com/ +2. https://alphacoders.com + especially this one person: https://alphacoders.com/users/profile/69089/robokoboto + and also the lofi category: https://alphacoders.com/lofi + +#### Teach Yourself Nix +1. https://github.com/XNM1/linux-nixos-hyprland-config-dotfiles) + Really good security oriented NixOS stuff +2. https://jade.fyi/blog/flakes-arent-real/ + Interesting blog post on using flakes + +#### Credits +1. https://github.com/XNM1/linux-nixos-hyprland-config-dotfiles + The simplicity of their layout is amazing, was really good to pick out small modules and learn how something works / is configured. +2. https://github.com/Misterio77/nix-starter-configs + Really great starter config for learning how parts interact and how to generally structure flakes +3. https://nixos.wiki/wiki/Fonts + Wiki page explaining how to install fonts and nerd fonts on NixOS +4. https://github.com/adi1090x/rofi + For the Rofi theme +5. https://github.com/zDyanTB/HyprNova + For the really cool hyprlock theme diff --git a/flake.lock b/flake.lock new file mode 100644 index 0000000..73d8139 --- /dev/null +++ b/flake.lock @@ -0,0 +1,1805 @@ +{ + "nodes": { + "abseil-src": { + "flake": false, + "locked": { + "lastModified": 1722535511, + "narHash": "sha256-51jpDhdZ0n+KLmxh8KVaTz53pZAB0dHjmILFX+OLud4=", + "owner": "abseil", + "repo": "abseil-cpp", + "rev": "4447c7562e3bc702ade25105912dce503f0c4010", + "type": "github" + }, + "original": { + "owner": "abseil", + "ref": "20240722.0", + "repo": "abseil-cpp", + "type": "github" + } + }, + "aquamarine": { + "inputs": { + "hyprutils": [ + "hyprland-git", + "hyprutils" + ], + "hyprwayland-scanner": [ + "hyprland-git", + "hyprwayland-scanner" + ], + "nixpkgs": [ + "hyprland-git", + "nixpkgs" + ], + "systems": [ + "hyprland-git", + "systems" + ] + }, + "locked": { + "lastModified": 1765900596, + "narHash": "sha256-+hn8v9jkkLP9m+o0Nm5SiEq10W0iWDSotH2XfjU45fA=", + "owner": "hyprwm", + "repo": "aquamarine", + "rev": "d83c97f8f5c0aae553c1489c7d9eff3eadcadace", + "type": "github" + }, + "original": { + "owner": "hyprwm", + "repo": "aquamarine", + "type": "github" + } + }, + "asio-src": { + "flake": false, + "locked": { + "lastModified": 1702548444, + "narHash": "sha256-8Xo6J6+dTvDtsthjbLMMTInHMDnMMM0rQwzbZu70J/s=", + "owner": "chriskohlhoff", + "repo": "asio", + "rev": "22ccfc94fc77356f7820601f9f33b9129a337d2d", + "type": "github" + }, + "original": { + "owner": "chriskohlhoff", + "ref": "asio-1-30-0", + "repo": "asio", + "type": "github" + } + }, + "awww": { + "inputs": { + "flake-compat": "flake-compat", + "nixpkgs": "nixpkgs", + "rust-overlay": "rust-overlay" + }, + "locked": { + "lastModified": 1770895252, + "narHash": "sha256-TUGZVDcC5xsrWVnpBNosAG1cTy+aWchCWXPyeLZdnGM=", + "ref": "refs/heads/main", + "rev": "2c86d41d07471f518e24f5cd1f586e4d2a32d12c", + "revCount": 1331, + "type": "git", + "url": "https://codeberg.org/LGFae/awww" + }, + "original": { + "type": "git", + "url": "https://codeberg.org/LGFae/awww" + } + }, + "cachyos": { + "inputs": { + "cachyos-kernel": "cachyos-kernel", + "cachyos-kernel-patches": "cachyos-kernel-patches", + "flake-compat": "flake-compat_2", + "flake-parts": "flake-parts", + "nixpkgs": "nixpkgs_2" + }, + "locked": { + "lastModified": 1770834979, + "narHash": "sha256-gh7GOW1y06dsfCnzBlx+qkkDUqnr1AhXBRjihUTB3w4=", + "owner": "xddxdd", + "repo": "nix-cachyos-kernel", + "rev": "36658048dacf3e409f17dfd1465eee1e4e217432", + "type": "github" + }, + "original": { + "owner": "xddxdd", + "repo": "nix-cachyos-kernel", + "type": "github" + } + }, + "cachyos-kernel": { + "flake": false, + "locked": { + "lastModified": 1770747435, + "narHash": "sha256-MR4xm9zQZ5LuoHWWdrlWJyEJablzx36nY19dXpY4VE4=", + "owner": "CachyOS", + "repo": "linux-cachyos", + "rev": "661da6f123bf3984e462fe9f932a38e643d6e081", + "type": "github" + }, + "original": { + "owner": "CachyOS", + "repo": "linux-cachyos", + "type": "github" + } + }, + "cachyos-kernel-patches": { + "flake": false, + "locked": { + "lastModified": 1770760828, + "narHash": "sha256-bcAZJG390mv9fFJwzyFl3iRyrTpSTWsra14qBJujR4A=", + "owner": "CachyOS", + "repo": "kernel-patches", + "rev": "87a5bb45dfee4cf31a57472591cb5013a7e9afcf", + "type": "github" + }, + "original": { + "owner": "CachyOS", + "repo": "kernel-patches", + "type": "github" + } + }, + "cerulean": { + "inputs": { + "deploy-rs": "deploy-rs", + "nixpkgs": [ + "nixpkgs" + ], + "nixpkgs-unstable": [ + "nixpkgs-unstable" + ], + "nt": "nt", + "systems": [ + "systems" + ] + }, + "locked": { + "lastModified": 1770914135, + "narHash": "sha256-gAOwv1il9GUxsS7XGF612Ftm9+cMvd1QOINwJlWpCnQ=", + "owner": "emilelcb", + "repo": "Cerulean", + "rev": "b151f45dfbdb0849d3c24940af946f11652dd8bf", + "type": "github" + }, + "original": { + "owner": "emilelcb", + "repo": "Cerulean", + "type": "github" + } + }, + "crane": { + "locked": { + "lastModified": 1759893430, + "narHash": "sha256-yAy4otLYm9iZ+NtQwTMEbqHwswSFUbhn7x826RR6djw=", + "owner": "ipetkov", + "repo": "crane", + "rev": "1979a2524cb8c801520bd94c38bb3d5692419d93", + "type": "github" + }, + "original": { + "owner": "ipetkov", + "repo": "crane", + "type": "github" + } + }, + "curl-src": { + "flake": false, + "locked": { + "lastModified": 1743572790, + "narHash": "sha256-huAGWNm2rYBmgzUuYQ21IYp2skyQECelEkXPMBJY3cE=", + "owner": "curl", + "repo": "curl", + "rev": "1c3149881769e7bd79b072e48374e4c2b3678b2f", + "type": "github" + }, + "original": { + "owner": "curl", + "ref": "curl-8_13_0", + "repo": "curl", + "type": "github" + } + }, + "deploy-rs": { + "inputs": { + "flake-compat": "flake-compat_3", + "nixpkgs": "nixpkgs_3", + "utils": "utils" + }, + "locked": { + "lastModified": 1766051518, + "narHash": "sha256-znKOwPXQnt3o7lDb3hdf19oDo0BLP4MfBOYiWkEHoik=", + "owner": "serokell", + "repo": "deploy-rs", + "rev": "d5eff7f948535b9c723d60cd8239f8f11ddc90fa", + "type": "github" + }, + "original": { + "owner": "serokell", + "repo": "deploy-rs", + "type": "github" + } + }, + "fenix": { + "inputs": { + "nixpkgs": [ + "iamb", + "nixpkgs" + ], + "rust-analyzer-src": "rust-analyzer-src" + }, + "locked": { + "lastModified": 1760510549, + "narHash": "sha256-NP+kmLMm7zSyv4Fufv+eSJXyqjLMUhUfPT6lXRlg/bU=", + "owner": "nix-community", + "repo": "fenix", + "rev": "ef7178cf086f267113b5c48fdeb6e510729c8214", + "type": "github" + }, + "original": { + "owner": "nix-community", + "repo": "fenix", + "type": "github" + } + }, + "flake-compat": { + "flake": false, + "locked": { + "lastModified": 1761588595, + "narHash": "sha256-XKUZz9zewJNUj46b4AJdiRZJAvSZ0Dqj2BNfXvFlJC4=", + "owner": "edolstra", + "repo": "flake-compat", + "rev": "f387cd2afec9419c8ee37694406ca490c3f34ee5", + "type": "github" + }, + "original": { + "owner": "edolstra", + "repo": "flake-compat", + "type": "github" + } + }, + "flake-compat_2": { + "flake": false, + "locked": { + "lastModified": 1767039857, + "narHash": "sha256-vNpUSpF5Nuw8xvDLj2KCwwksIbjua2LZCqhV1LNRDns=", + "owner": "NixOS", + "repo": "flake-compat", + "rev": "5edf11c44bc78a0d334f6334cdaf7d60d732daab", + "type": "github" + }, + "original": { + "owner": "NixOS", + "repo": "flake-compat", + "type": "github" + } + }, + "flake-compat_3": { + "flake": false, + "locked": { + "lastModified": 1733328505, + "narHash": "sha256-NeCCThCEP3eCl2l/+27kNNK7QrwZB1IJCrXfrbv5oqU=", + "owner": "edolstra", + "repo": "flake-compat", + "rev": "ff81ac966bb2cae68946d5ed5fc4994f96d0ffec", + "type": "github" + }, + "original": { + "owner": "edolstra", + "repo": "flake-compat", + "type": "github" + } + }, + "flake-compat_4": { + "flake": false, + "locked": { + "lastModified": 1761588595, + "narHash": "sha256-XKUZz9zewJNUj46b4AJdiRZJAvSZ0Dqj2BNfXvFlJC4=", + "owner": "edolstra", + "repo": "flake-compat", + "rev": "f387cd2afec9419c8ee37694406ca490c3f34ee5", + "type": "github" + }, + "original": { + "owner": "edolstra", + "repo": "flake-compat", + "type": "github" + } + }, + "flake-compat_5": { + "locked": { + "lastModified": 1767039857, + "narHash": "sha256-vNpUSpF5Nuw8xvDLj2KCwwksIbjua2LZCqhV1LNRDns=", + "owner": "edolstra", + "repo": "flake-compat", + "rev": "5edf11c44bc78a0d334f6334cdaf7d60d732daab", + "type": "github" + }, + "original": { + "owner": "edolstra", + "repo": "flake-compat", + "type": "github" + } + }, + "flake-compat_6": { + "locked": { + "lastModified": 1733328505, + "narHash": "sha256-NeCCThCEP3eCl2l/+27kNNK7QrwZB1IJCrXfrbv5oqU=", + "rev": "ff81ac966bb2cae68946d5ed5fc4994f96d0ffec", + "revCount": 69, + "type": "tarball", + "url": "https://api.flakehub.com/f/pinned/edolstra/flake-compat/1.1.0/01948eb7-9cba-704f-bbf3-3fa956735b52/source.tar.gz" + }, + "original": { + "type": "tarball", + "url": "https://flakehub.com/f/edolstra/flake-compat/1.tar.gz" + } + }, + "flake-parts": { + "inputs": { + "nixpkgs-lib": "nixpkgs-lib" + }, + "locked": { + "lastModified": 1769996383, + "narHash": "sha256-AnYjnFWgS49RlqX7LrC4uA+sCCDBj0Ry/WOJ5XWAsa0=", + "owner": "hercules-ci", + "repo": "flake-parts", + "rev": "57928607ea566b5db3ad13af0e57e921e6b12381", + "type": "github" + }, + "original": { + "owner": "hercules-ci", + "repo": "flake-parts", + "type": "github" + } + }, + "flake-parts_2": { + "inputs": { + "nixpkgs-lib": [ + "cerulean", + "nt", + "nix-unit", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1762440070, + "narHash": "sha256-xxdepIcb39UJ94+YydGP221rjnpkDZUlykKuF54PsqI=", + "owner": "hercules-ci", + "repo": "flake-parts", + "rev": "26d05891e14c88eb4a5d5bee659c0db5afb609d8", + "type": "github" + }, + "original": { + "owner": "hercules-ci", + "repo": "flake-parts", + "type": "github" + } + }, + "flake-parts_3": { + "inputs": { + "nixpkgs-lib": "nixpkgs-lib_2" + }, + "locked": { + "lastModified": 1768135262, + "narHash": "sha256-PVvu7OqHBGWN16zSi6tEmPwwHQ4rLPU9Plvs8/1TUBY=", + "owner": "hercules-ci", + "repo": "flake-parts", + "rev": "80daad04eddbbf5a4d883996a73f3f542fa437ac", + "type": "github" + }, + "original": { + "owner": "hercules-ci", + "repo": "flake-parts", + "type": "github" + } + }, + "flake-utils": { + "inputs": { + "systems": "systems_4" + }, + "locked": { + "lastModified": 1731533236, + "narHash": "sha256-l0KFg5HjrsfsO/JpG+r7fRrqm12kzFHyUHqHCVpMMbI=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "11707dc2f618dd54ca8739b309ec4fc024de578b", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "fmt-src": { + "flake": false, + "locked": { + "lastModified": 1758127535, + "narHash": "sha256-AZDmIeU1HbadC+K0TIAGogvVnxt0oE9U6ocpawIgl6g=", + "owner": "fmtlib", + "repo": "fmt", + "rev": "e424e3f2e607da02742f73db84873b8084fc714c", + "type": "github" + }, + "original": { + "owner": "fmtlib", + "ref": "12.0.0", + "repo": "fmt", + "type": "github" + } + }, + "gitignore": { + "inputs": { + "nixpkgs": [ + "hyprland-git", + "pre-commit-hooks", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1709087332, + "narHash": "sha256-HG2cCnktfHsKV0s4XW83gU3F57gaTljL9KNSuG6bnQs=", + "owner": "hercules-ci", + "repo": "gitignore.nix", + "rev": "637db329424fd7e46cf4185293b9cc8c88c95394", + "type": "github" + }, + "original": { + "owner": "hercules-ci", + "repo": "gitignore.nix", + "type": "github" + } + }, + "home-manager": { + "inputs": { + "nixpkgs": [ + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1770910055, + "narHash": "sha256-6HJVLBtbf2ub4a3P9YG+a3CTzzUcy4HpLz4IQdiyVxY=", + "owner": "nix-community", + "repo": "home-manager", + "rev": "0825a0922a5d677f5f984bb79524569bbd1f9954", + "type": "github" + }, + "original": { + "owner": "nix-community", + "ref": "master", + "repo": "home-manager", + "type": "github" + } + }, + "home-manager_2": { + "inputs": { + "nixpkgs": [ + "zen", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1769872935, + "narHash": "sha256-07HMIGQ/WJeAQJooA7Kkg1SDKxhAiV6eodvOwTX6WKI=", + "owner": "nix-community", + "repo": "home-manager", + "rev": "f4ad5068ee8e89e4a7c2e963e10dd35cd77b37b7", + "type": "github" + }, + "original": { + "owner": "nix-community", + "repo": "home-manager", + "type": "github" + } + }, + "hyprcursor": { + "inputs": { + "hyprlang": [ + "hyprland-git", + "hyprlang" + ], + "nixpkgs": [ + "hyprland-git", + "nixpkgs" + ], + "systems": [ + "hyprland-git", + "systems" + ] + }, + "locked": { + "lastModified": 1753964049, + "narHash": "sha256-lIqabfBY7z/OANxHoPeIrDJrFyYy9jAM4GQLzZ2feCM=", + "owner": "hyprwm", + "repo": "hyprcursor", + "rev": "44e91d467bdad8dcf8bbd2ac7cf49972540980a5", + "type": "github" + }, + "original": { + "owner": "hyprwm", + "repo": "hyprcursor", + "type": "github" + } + }, + "hyprgraphics": { + "inputs": { + "hyprutils": [ + "hyprland-git", + "hyprutils" + ], + "nixpkgs": [ + "hyprland-git", + "nixpkgs" + ], + "systems": [ + "hyprland-git", + "systems" + ] + }, + "locked": { + "lastModified": 1763733840, + "narHash": "sha256-JnET78yl5RvpGuDQy3rCycOCkiKoLr5DN1fPhRNNMco=", + "owner": "hyprwm", + "repo": "hyprgraphics", + "rev": "8f1bec691b2d198c60cccabca7a94add2df4ed1a", + "type": "github" + }, + "original": { + "owner": "hyprwm", + "repo": "hyprgraphics", + "type": "github" + } + }, + "hyprland-git": { + "inputs": { + "aquamarine": "aquamarine", + "hyprcursor": "hyprcursor", + "hyprgraphics": "hyprgraphics", + "hyprland-guiutils": "hyprland-guiutils", + "hyprland-protocols": "hyprland-protocols", + "hyprlang": "hyprlang", + "hyprutils": "hyprutils", + "hyprwayland-scanner": "hyprwayland-scanner", + "hyprwire": "hyprwire", + "nixpkgs": "nixpkgs_5", + "pre-commit-hooks": "pre-commit-hooks", + "systems": "systems_3", + "xdph": "xdph" + }, + "locked": { + "lastModified": 1766604420, + "narHash": "sha256-2Kqg1YNtjPGXc1DIzBeESL8hiuUNUn3c3Oimab19Zn8=", + "owner": "hyprwm", + "repo": "Hyprland", + "rev": "25250527793eb04bb60f103abe7f06370b9f6e1c", + "type": "github" + }, + "original": { + "owner": "hyprwm", + "repo": "Hyprland", + "rev": "25250527793eb04bb60f103abe7f06370b9f6e1c", + "type": "github" + } + }, + "hyprland-guiutils": { + "inputs": { + "aquamarine": [ + "hyprland-git", + "aquamarine" + ], + "hyprgraphics": [ + "hyprland-git", + "hyprgraphics" + ], + "hyprlang": [ + "hyprland-git", + "hyprlang" + ], + "hyprtoolkit": "hyprtoolkit", + "hyprutils": [ + "hyprland-git", + "hyprutils" + ], + "hyprwayland-scanner": [ + "hyprland-git", + "hyprwayland-scanner" + ], + "nixpkgs": [ + "hyprland-git", + "nixpkgs" + ], + "systems": [ + "hyprland-git", + "systems" + ] + }, + "locked": { + "lastModified": 1765643131, + "narHash": "sha256-CCGohW5EBIRy4B7vTyBMqPgsNcaNenVad/wszfddET0=", + "owner": "hyprwm", + "repo": "hyprland-guiutils", + "rev": "e50ae912813bdfa8372d62daf454f48d6df02297", + "type": "github" + }, + "original": { + "owner": "hyprwm", + "repo": "hyprland-guiutils", + "type": "github" + } + }, + "hyprland-plugins": { + "inputs": { + "hyprland": [ + "hyprland-git" + ], + "nixpkgs": [ + "hyprland-plugins", + "hyprland", + "nixpkgs" + ], + "systems": [ + "hyprland-plugins", + "hyprland", + "systems" + ] + }, + "locked": { + "lastModified": 1770899531, + "narHash": "sha256-UBrWjh0DR8db60aLNkTnZTJ9F4kWK0Y7rUDNJC88W7A=", + "owner": "hyprwm", + "repo": "hyprland-plugins", + "rev": "e03c34ccd51280a44ea6d1f5c040cd81ecca25ed", + "type": "github" + }, + "original": { + "owner": "hyprwm", + "repo": "hyprland-plugins", + "type": "github" + } + }, + "hyprland-protocols": { + "inputs": { + "nixpkgs": [ + "hyprland-git", + "nixpkgs" + ], + "systems": [ + "hyprland-git", + "systems" + ] + }, + "locked": { + "lastModified": 1765214753, + "narHash": "sha256-P9zdGXOzToJJgu5sVjv7oeOGPIIwrd9hAUAP3PsmBBs=", + "owner": "hyprwm", + "repo": "hyprland-protocols", + "rev": "3f3860b869014c00e8b9e0528c7b4ddc335c21ab", + "type": "github" + }, + "original": { + "owner": "hyprwm", + "repo": "hyprland-protocols", + "type": "github" + } + }, + "hyprlang": { + "inputs": { + "hyprutils": [ + "hyprland-git", + "hyprutils" + ], + "nixpkgs": [ + "hyprland-git", + "nixpkgs" + ], + "systems": [ + "hyprland-git", + "systems" + ] + }, + "locked": { + "lastModified": 1764612430, + "narHash": "sha256-54ltTSbI6W+qYGMchAgCR6QnC1kOdKXN6X6pJhOWxFg=", + "owner": "hyprwm", + "repo": "hyprlang", + "rev": "0d00dc118981531aa731150b6ea551ef037acddd", + "type": "github" + }, + "original": { + "owner": "hyprwm", + "repo": "hyprlang", + "type": "github" + } + }, + "hyprtoolkit": { + "inputs": { + "aquamarine": [ + "hyprland-git", + "hyprland-guiutils", + "aquamarine" + ], + "hyprgraphics": [ + "hyprland-git", + "hyprland-guiutils", + "hyprgraphics" + ], + "hyprlang": [ + "hyprland-git", + "hyprland-guiutils", + "hyprlang" + ], + "hyprutils": [ + "hyprland-git", + "hyprland-guiutils", + "hyprutils" + ], + "hyprwayland-scanner": [ + "hyprland-git", + "hyprland-guiutils", + "hyprwayland-scanner" + ], + "nixpkgs": [ + "hyprland-git", + "hyprland-guiutils", + "nixpkgs" + ], + "systems": [ + "hyprland-git", + "hyprland-guiutils", + "systems" + ] + }, + "locked": { + "lastModified": 1764592794, + "narHash": "sha256-7CcO+wbTJ1L1NBQHierHzheQGPWwkIQug/w+fhTAVuU=", + "owner": "hyprwm", + "repo": "hyprtoolkit", + "rev": "5cfe0743f0e608e1462972303778d8a0859ee63e", + "type": "github" + }, + "original": { + "owner": "hyprwm", + "repo": "hyprtoolkit", + "type": "github" + } + }, + "hyprutils": { + "inputs": { + "nixpkgs": [ + "hyprland-git", + "nixpkgs" + ], + "systems": [ + "hyprland-git", + "systems" + ] + }, + "locked": { + "lastModified": 1766160771, + "narHash": "sha256-roINUGikWRqqgKrD4iotKbGj3ZKJl3hjMz5l/SyKrHw=", + "owner": "hyprwm", + "repo": "hyprutils", + "rev": "5ac060bfcf2f12b3a6381156ebbc13826a05b09f", + "type": "github" + }, + "original": { + "owner": "hyprwm", + "repo": "hyprutils", + "type": "github" + } + }, + "hyprwayland-scanner": { + "inputs": { + "nixpkgs": [ + "hyprland-git", + "nixpkgs" + ], + "systems": [ + "hyprland-git", + "systems" + ] + }, + "locked": { + "lastModified": 1763640274, + "narHash": "sha256-Uan1Nl9i4TF/kyFoHnTq1bd/rsWh4GAK/9/jDqLbY5A=", + "owner": "hyprwm", + "repo": "hyprwayland-scanner", + "rev": "f6cf414ca0e16a4d30198fd670ec86df3c89f671", + "type": "github" + }, + "original": { + "owner": "hyprwm", + "repo": "hyprwayland-scanner", + "type": "github" + } + }, + "hyprwire": { + "inputs": { + "hyprutils": [ + "hyprland-git", + "hyprutils" + ], + "nixpkgs": [ + "hyprland-git", + "nixpkgs" + ], + "systems": [ + "hyprland-git", + "systems" + ] + }, + "locked": { + "lastModified": 1766253200, + "narHash": "sha256-26qPwrd3od+xoYVywSB7hC2cz9ivN46VPLlrsXyGxvE=", + "owner": "hyprwm", + "repo": "hyprwire", + "rev": "1079777525b30a947c8d657fac158e00ae85de9d", + "type": "github" + }, + "original": { + "owner": "hyprwm", + "repo": "hyprwire", + "type": "github" + } + }, + "iamb": { + "inputs": { + "crane": "crane", + "fenix": "fenix", + "flake-utils": "flake-utils", + "nixpkgs": "nixpkgs_6" + }, + "locked": { + "lastModified": 1768868561, + "narHash": "sha256-nvEOtV1Y5K9E1Lj+bPnQ6k1AneDM9OT3RbV3Urm/1Qs=", + "owner": "ulyssa", + "repo": "iamb", + "rev": "93fc47d019cd6a9d56f163aa6ba819ef1fd309d6", + "type": "github" + }, + "original": { + "owner": "ulyssa", + "repo": "iamb", + "type": "github" + } + }, + "incbin-src": { + "flake": false, + "locked": { + "lastModified": 1748303270, + "narHash": "sha256-vgOfViZnWTKpBB6vDNDJSB3YuuGGVhg++zsi9Ubatno=", + "owner": "graphitemaster", + "repo": "incbin", + "rev": "22061f51fe9f2f35f061f85c2b217b55dd75310d", + "type": "github" + }, + "original": { + "owner": "graphitemaster", + "repo": "incbin", + "rev": "22061f51fe9f2f35f061f85c2b217b55dd75310d", + "type": "github" + } + }, + "json-src": { + "flake": false, + "locked": { + "lastModified": 1744360948, + "narHash": "sha256-cECvDOLxgX7Q9R3IE86Hj9JJUxraDQvhoyPDF03B2CY=", + "owner": "nlohmann", + "repo": "json", + "rev": "55f93686c01528224f448c19128836e7df245f72", + "type": "github" + }, + "original": { + "owner": "nlohmann", + "ref": "v3.12.0", + "repo": "json", + "type": "github" + } + }, + "libgit2-src": { + "flake": false, + "locked": { + "lastModified": 1749227175, + "narHash": "sha256-/xI3v7LNhpgfjv/m+sZwYDhhYvS6kQYxiiiG3+EF8Mw=", + "owner": "libgit2", + "repo": "libgit2", + "rev": "0060d9cf5666f015b1067129bd874c6cc4c9c7ac", + "type": "github" + }, + "original": { + "owner": "libgit2", + "ref": "v1.9.1", + "repo": "libgit2", + "type": "github" + } + }, + "luajit-src": { + "flake": false, + "locked": { + "lastModified": 1763177035, + "narHash": "sha256-oYD86MqmlJpiCuEs4LwVtxvarPtz1RPWm8nJqNE0sBs=", + "owner": "SteamClientHomebrew", + "repo": "LuaJIT", + "rev": "89550023569c3e195e75e12951c067fe5591e0d2", + "type": "github" + }, + "original": { + "owner": "SteamClientHomebrew", + "ref": "v2.1", + "repo": "LuaJIT", + "type": "github" + } + }, + "luajson-src": { + "flake": false, + "locked": { + "lastModified": 1763065879, + "narHash": "sha256-5Mdp4jp+rqz2ufkBa1gMfd8nep+Um+mBdr6+Ut6yz9I=", + "owner": "SteamClientHomebrew", + "repo": "LuaJSON", + "rev": "0c1fabf07c42f3907287d1e4f729e0620c1fe6fd", + "type": "github" + }, + "original": { + "owner": "SteamClientHomebrew", + "repo": "LuaJSON", + "rev": "0c1fabf07c42f3907287d1e4f729e0620c1fe6fd", + "type": "github" + } + }, + "millennium": { + "inputs": { + "abseil-src": "abseil-src", + "asio-src": "asio-src", + "curl-src": "curl-src", + "fmt-src": "fmt-src", + "incbin-src": "incbin-src", + "json-src": "json-src", + "libgit2-src": "libgit2-src", + "luajit-src": "luajit-src", + "luajson-src": "luajson-src", + "millennium-src": "millennium-src", + "minhook-src": "minhook-src", + "mini-src": "mini-src", + "minizip-src": "minizip-src", + "nixpkgs": "nixpkgs_7", + "re2-src": "re2-src", + "websocketpp-src": "websocketpp-src", + "zlib-src": "zlib-src" + }, + "locked": { + "dir": "packages/nix", + "lastModified": 1770489586, + "narHash": "sha256-JMN7T1ZrQ7PjSsgKobxtEENHiBAxqHNNIAaJcPnCeHM=", + "owner": "trivaris", + "repo": "millennium", + "rev": "19656df9f9c8dfa0b7c6a4d2d25073b78efc4eda", + "type": "github" + }, + "original": { + "dir": "packages/nix", + "owner": "trivaris", + "repo": "millennium", + "type": "github" + } + }, + "millennium-src": { + "flake": false, + "locked": { + "lastModified": 1770463863, + "narHash": "sha256-MceGTpXobCAh5Ll/1iTWcEf6/nHY3Ll1t06JxbYc+Co=", + "owner": "SteamClientHomebrew", + "repo": "Millennium", + "rev": "1bc62c94a06f25f7e8d7e269f11cd968cf576bff", + "type": "github" + }, + "original": { + "owner": "SteamClientHomebrew", + "repo": "Millennium", + "rev": "1bc62c94a06f25f7e8d7e269f11cd968cf576bff", + "type": "github" + } + }, + "minhook-src": { + "flake": false, + "locked": { + "lastModified": 1743163800, + "narHash": "sha256-0eGFfg365bb4zic1WTHMvKHbxuhhGp72/clu8OklHXs=", + "owner": "TsudaKageyu", + "repo": "minhook", + "rev": "c3fcafdc10146beb5919319d0683e44e3c30d537", + "type": "github" + }, + "original": { + "owner": "TsudaKageyu", + "ref": "v1.3.4", + "repo": "minhook", + "type": "github" + } + }, + "mini-src": { + "flake": false, + "locked": { + "lastModified": 1743356736, + "narHash": "sha256-zBFFOlECbie7+62fTGf+NP4gNmfv2Qddw3ys6xn7o9U=", + "owner": "metayeti", + "repo": "mINI", + "rev": "52b66e987cb56171dc91d96115cdf094b6e4d7a0", + "type": "github" + }, + "original": { + "owner": "metayeti", + "ref": "0.9.18", + "repo": "mINI", + "type": "github" + } + }, + "minizip-src": { + "flake": false, + "locked": { + "lastModified": 1746408966, + "narHash": "sha256-I3CZwtfJMsZYQOMdGhooUN8vssnQj6rCzv8F+rne3vg=", + "owner": "zlib-ng", + "repo": "minizip-ng", + "rev": "f3ed731e27a97e30dffe076ed5e0537daae5c1bd", + "type": "github" + }, + "original": { + "owner": "zlib-ng", + "ref": "4.0.10", + "repo": "minizip-ng", + "type": "github" + } + }, + "nix-alien": { + "inputs": { + "flake-compat": "flake-compat_5", + "nix-index-database": "nix-index-database", + "nixpkgs": "nixpkgs_8" + }, + "locked": { + "lastModified": 1768904356, + "narHash": "sha256-TIG8J+Or8nOydy8TztvtIshnprlf1q6XDIJnopLtMlA=", + "owner": "thiagokokada", + "repo": "nix-alien", + "rev": "d95b25a4dd6da2a1dfeaaf66163d0a281a8270e9", + "type": "github" + }, + "original": { + "owner": "thiagokokada", + "repo": "nix-alien", + "type": "github" + } + }, + "nix-github-actions": { + "inputs": { + "nixpkgs": [ + "cerulean", + "nt", + "nix-unit", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1737420293, + "narHash": "sha256-F1G5ifvqTpJq7fdkT34e/Jy9VCyzd5XfJ9TO8fHhJWE=", + "owner": "nix-community", + "repo": "nix-github-actions", + "rev": "f4158fa080ef4503c8f4c820967d946c2af31ec9", + "type": "github" + }, + "original": { + "owner": "nix-community", + "repo": "nix-github-actions", + "type": "github" + } + }, + "nix-index-database": { + "inputs": { + "nixpkgs": [ + "nix-alien", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1765267181, + "narHash": "sha256-d3NBA9zEtBu2JFMnTBqWj7Tmi7R5OikoU2ycrdhQEws=", + "owner": "nix-community", + "repo": "nix-index-database", + "rev": "82befcf7dc77c909b0f2a09f5da910ec95c5b78f", + "type": "github" + }, + "original": { + "owner": "nix-community", + "repo": "nix-index-database", + "type": "github" + } + }, + "nix-unit": { + "inputs": { + "flake-parts": "flake-parts_2", + "nix-github-actions": "nix-github-actions", + "nixpkgs": [ + "cerulean", + "nt", + "nixpkgs" + ], + "treefmt-nix": "treefmt-nix" + }, + "locked": { + "lastModified": 1762774186, + "narHash": "sha256-hRADkHjNt41+JUHw2EiSkMaL4owL83g5ZppjYUdF/Dc=", + "owner": "nix-community", + "repo": "nix-unit", + "rev": "1c9ab50554eed0b768f9e5b6f646d63c9673f0f7", + "type": "github" + }, + "original": { + "owner": "nix-community", + "repo": "nix-unit", + "type": "github" + } + }, + "nixcats": { + "locked": { + "lastModified": 1770584904, + "narHash": "sha256-9Zaz8lbKF2W9pwXZEnbiGsicHdBoU+dHt3Wv3mCJoZ8=", + "owner": "BirdeeHub", + "repo": "nixCats-nvim", + "rev": "538fdde784d2909700d97a8ef307783b33a86fb1", + "type": "github" + }, + "original": { + "owner": "BirdeeHub", + "repo": "nixCats-nvim", + "type": "github" + } + }, + "nixcord": { + "inputs": { + "flake-compat": "flake-compat_6", + "flake-parts": "flake-parts_3", + "nixpkgs": "nixpkgs_9" + }, + "locked": { + "lastModified": 1770365342, + "narHash": "sha256-jV5tAs67HSBWz/ePEp1eyoUK3Lqfc1fEAvt2wC6reFc=", + "owner": "FlameFlag", + "repo": "nixcord", + "rev": "51db830336715209a4a213aa985f4d405ff0be69", + "type": "github" + }, + "original": { + "owner": "FlameFlag", + "repo": "nixcord", + "type": "github" + } + }, + "nixpkgs": { + "locked": { + "lastModified": 1763934636, + "narHash": "sha256-9glbI7f1uU+yzQCq5LwLgdZqx6svOhZWkd4JRY265fc=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "ee09932cedcef15aaf476f9343d1dea2cb77e261", + "type": "github" + }, + "original": { + "owner": "nixos", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-lib": { + "locked": { + "lastModified": 1769909678, + "narHash": "sha256-cBEymOf4/o3FD5AZnzC3J9hLbiZ+QDT/KDuyHXVJOpM=", + "owner": "nix-community", + "repo": "nixpkgs.lib", + "rev": "72716169fe93074c333e8d0173151350670b824c", + "type": "github" + }, + "original": { + "owner": "nix-community", + "repo": "nixpkgs.lib", + "type": "github" + } + }, + "nixpkgs-lib_2": { + "locked": { + "lastModified": 1761114652, + "narHash": "sha256-f/QCJM/YhrV/lavyCVz8iU3rlZun6d+dAiC3H+CDle4=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "01f116e4df6a15f4ccdffb1bcd41096869fb385c", + "type": "github" + }, + "original": { + "owner": "nix-community", + "repo": "nixpkgs.lib", + "type": "github" + } + }, + "nixpkgs-unstable": { + "locked": { + "lastModified": 1770914792, + "narHash": "sha256-QpCRgIbupASO9adsg2kFNNUnOIQq0vJ9g6HCxlOA7v8=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "3b285f04c85ceacf7a53cfa21b2f5cb60a2d06e2", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "staging-next", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_10": { + "locked": { + "lastModified": 1770562336, + "narHash": "sha256-ub1gpAONMFsT/GU2hV6ZWJjur8rJ6kKxdm9IlCT0j84=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "d6c71932130818840fc8fe9509cf50be8c64634f", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_11": { + "locked": { + "lastModified": 1770197578, + "narHash": "sha256-AYqlWrX09+HvGs8zM6ebZ1pwUqjkfpnv8mewYwAo+iM=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "00c21e4c93d963c50d4c0c89bfa84ed6e0694df2", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_12": { + "locked": { + "lastModified": 1769461804, + "narHash": "sha256-msG8SU5WsBUfVVa/9RPLaymvi5bI8edTavbIq3vRlhI=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "bfc1b8a4574108ceef22f02bafcf6611380c100d", + "type": "github" + }, + "original": { + "owner": "nixos", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_2": { + "locked": { + "lastModified": 1770818322, + "narHash": "sha256-tttCN+yrhM7svQW6DqtS3JV9POrRJAaS/e0xuUHBTEM=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "d9ca3a4b73f19ea147c9d977d3dde8f612ac648f", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-unstable-small", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_3": { + "locked": { + "lastModified": 1743014863, + "narHash": "sha256-jAIUqsiN2r3hCuHji80U7NNEafpIMBXiwKlSrjWMlpg=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "bd3bac8bfb542dbde7ffffb6987a1a1f9d41699f", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_4": { + "locked": { + "lastModified": 1767313136, + "narHash": "sha256-16KkgfdYqjaeRGBaYsNrhPRRENs0qzkQVUooNHtoy2w=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "ac62194c3917d5f474c1a844b6fd6da2db95077d", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-25.05", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_5": { + "locked": { + "lastModified": 1766070988, + "narHash": "sha256-G/WVghka6c4bAzMhTwT2vjLccg/awmHkdKSd2JrycLc=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "c6245e83d836d0433170a16eb185cefe0572f8b8", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_6": { + "locked": { + "lastModified": 1760284886, + "narHash": "sha256-TK9Kr0BYBQ/1P5kAsnNQhmWWKgmZXwUQr4ZMjCzWf2c=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "cf3f5c4def3c7b5f1fc012b3d839575dbe552d43", + "type": "github" + }, + "original": { + "owner": "nixos", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_7": { + "locked": { + "lastModified": 1770115704, + "narHash": "sha256-KHFT9UWOF2yRPlAnSXQJh6uVcgNcWlFqqiAZ7OVlHNc=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "e6eae2ee2110f3d31110d5c222cd395303343b08", + "type": "github" + }, + "original": { + "owner": "nixos", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_8": { + "locked": { + "lastModified": 1768305791, + "narHash": "sha256-AIdl6WAn9aymeaH/NvBj0H9qM+XuAuYbGMZaP0zcXAQ=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "1412caf7bf9e660f2f962917c14b1ea1c3bc695e", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_9": { + "locked": { + "lastModified": 1770770419, + "narHash": "sha256-iKZMkr6Cm9JzWlRYW/VPoL0A9jVKtZYiU4zSrVeetIs=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "6c5e707c6b5339359a9a9e215c5e66d6d802fd7a", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-25.11", + "repo": "nixpkgs", + "type": "github" + } + }, + "nt": { + "inputs": { + "nix-unit": "nix-unit", + "nixpkgs": "nixpkgs_4", + "systems": "systems_2" + }, + "locked": { + "lastModified": 1770911021, + "narHash": "sha256-8FcXBu0CjeeZeq3uW2h/c5AV+hqELuyPiHsUogOSmZM=", + "owner": "emilelcb", + "repo": "nt", + "rev": "471e1617e8cc0bc749712a7a6af2b2e9f988ffbf", + "type": "github" + }, + "original": { + "owner": "emilelcb", + "repo": "nt", + "type": "github" + } + }, + "pre-commit-hooks": { + "inputs": { + "flake-compat": "flake-compat_4", + "gitignore": "gitignore", + "nixpkgs": [ + "hyprland-git", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1765911976, + "narHash": "sha256-t3T/xm8zstHRLx+pIHxVpQTiySbKqcQbK+r+01XVKc0=", + "owner": "cachix", + "repo": "git-hooks.nix", + "rev": "b68b780b69702a090c8bb1b973bab13756cc7a27", + "type": "github" + }, + "original": { + "owner": "cachix", + "repo": "git-hooks.nix", + "type": "github" + } + }, + "re2-src": { + "flake": false, + "locked": { + "lastModified": 1762353507, + "narHash": "sha256-0J1HVk+eR7VN0ymucW9dNlT36j16XIfCzcs1EVyEIEU=", + "owner": "google", + "repo": "re2", + "rev": "927f5d53caf8111721e734cf24724686bb745f55", + "type": "github" + }, + "original": { + "owner": "google", + "ref": "2025-11-05", + "repo": "re2", + "type": "github" + } + }, + "root": { + "inputs": { + "awww": "awww", + "cachyos": "cachyos", + "cerulean": "cerulean", + "home-manager": "home-manager", + "hyprland-git": "hyprland-git", + "hyprland-plugins": "hyprland-plugins", + "iamb": "iamb", + "millennium": "millennium", + "nix-alien": "nix-alien", + "nixcats": "nixcats", + "nixcord": "nixcord", + "nixpkgs": "nixpkgs_10", + "nixpkgs-unstable": "nixpkgs-unstable", + "sddm-silent": "sddm-silent", + "spicetify-nix": "spicetify-nix", + "systems": "systems_6", + "zen": "zen" + } + }, + "rust-analyzer-src": { + "flake": false, + "locked": { + "lastModified": 1760457219, + "narHash": "sha256-WJOUGx42hrhmvvYcGkwea+BcJuQJLcns849OnewQqX4=", + "owner": "rust-lang", + "repo": "rust-analyzer", + "rev": "8747cf81540bd1bbbab9ee2702f12c33aa887b46", + "type": "github" + }, + "original": { + "owner": "rust-lang", + "ref": "nightly", + "repo": "rust-analyzer", + "type": "github" + } + }, + "rust-overlay": { + "inputs": { + "nixpkgs": [ + "awww", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1764038373, + "narHash": "sha256-M6w2wNBRelcavoDAyFL2iO4NeWknD40ASkH1S3C0YGM=", + "owner": "oxalica", + "repo": "rust-overlay", + "rev": "ab3536fe850211a96673c6ffb2cb88aab8071cc9", + "type": "github" + }, + "original": { + "owner": "oxalica", + "repo": "rust-overlay", + "type": "github" + } + }, + "sddm-silent": { + "inputs": { + "nixpkgs": [ + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1769900466, + "narHash": "sha256-WeoJBj/PhqFCCJEIycTipqPbKm5BpQT2uzFTYcYZ30I=", + "owner": "uiriansan", + "repo": "SilentSDDM", + "rev": "a44caf771b4cb72f5c2514f7d488455b0fa860d2", + "type": "github" + }, + "original": { + "owner": "uiriansan", + "repo": "SilentSDDM", + "type": "github" + } + }, + "spicetify-nix": { + "inputs": { + "nixpkgs": "nixpkgs_11", + "systems": "systems_5" + }, + "locked": { + "lastModified": 1770846656, + "narHash": "sha256-wdYpo8++TqKp3GdRgLFykjuIVW1m9GlUnxID2FG74cE=", + "owner": "Gerg-L", + "repo": "spicetify-nix", + "rev": "40e65cfc4608402674e1efaac3fccce20d2a72d3", + "type": "github" + }, + "original": { + "owner": "Gerg-L", + "repo": "spicetify-nix", + "type": "github" + } + }, + "systems": { + "locked": { + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "type": "github" + }, + "original": { + "owner": "nix-systems", + "repo": "default", + "type": "github" + } + }, + "systems_2": { + "locked": { + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "type": "github" + }, + "original": { + "owner": "nix-systems", + "repo": "default", + "type": "github" + } + }, + "systems_3": { + "locked": { + "lastModified": 1689347949, + "narHash": "sha256-12tWmuL2zgBgZkdoB6qXZsgJEH9LR3oUgpaQq2RbI80=", + "owner": "nix-systems", + "repo": "default-linux", + "rev": "31732fcf5e8fea42e59c2488ad31a0e651500f68", + "type": "github" + }, + "original": { + "owner": "nix-systems", + "repo": "default-linux", + "type": "github" + } + }, + "systems_4": { + "locked": { + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "type": "github" + }, + "original": { + "owner": "nix-systems", + "repo": "default", + "type": "github" + } + }, + "systems_5": { + "locked": { + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "type": "github" + }, + "original": { + "owner": "nix-systems", + "repo": "default", + "type": "github" + } + }, + "systems_6": { + "locked": { + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "type": "github" + }, + "original": { + "owner": "nix-systems", + "repo": "default", + "type": "github" + } + }, + "treefmt-nix": { + "inputs": { + "nixpkgs": [ + "cerulean", + "nt", + "nix-unit", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1762410071, + "narHash": "sha256-aF5fvoZeoXNPxT0bejFUBXeUjXfHLSL7g+mjR/p5TEg=", + "owner": "numtide", + "repo": "treefmt-nix", + "rev": "97a30861b13c3731a84e09405414398fbf3e109f", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "treefmt-nix", + "type": "github" + } + }, + "utils": { + "inputs": { + "systems": "systems" + }, + "locked": { + "lastModified": 1731533236, + "narHash": "sha256-l0KFg5HjrsfsO/JpG+r7fRrqm12kzFHyUHqHCVpMMbI=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "11707dc2f618dd54ca8739b309ec4fc024de578b", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "websocketpp-src": { + "flake": false, + "locked": { + "lastModified": 1587320717, + "narHash": "sha256-9fIwouthv2GcmBe/UPvV7Xn9P2o0Kmn2hCI4jCh0hPM=", + "owner": "zaphoyd", + "repo": "websocketpp", + "rev": "56123c87598f8b1dd471be83ca841ceae07f95ba", + "type": "github" + }, + "original": { + "owner": "zaphoyd", + "ref": "0.8.2", + "repo": "websocketpp", + "type": "github" + } + }, + "xdph": { + "inputs": { + "hyprland-protocols": [ + "hyprland-git", + "hyprland-protocols" + ], + "hyprlang": [ + "hyprland-git", + "hyprlang" + ], + "hyprutils": [ + "hyprland-git", + "hyprutils" + ], + "hyprwayland-scanner": [ + "hyprland-git", + "hyprwayland-scanner" + ], + "nixpkgs": [ + "hyprland-git", + "nixpkgs" + ], + "systems": [ + "hyprland-git", + "systems" + ] + }, + "locked": { + "lastModified": 1761431178, + "narHash": "sha256-xzjC1CV3+wpUQKNF+GnadnkeGUCJX+vgaWIZsnz9tzI=", + "owner": "hyprwm", + "repo": "xdg-desktop-portal-hyprland", + "rev": "4b8801228ff958d028f588f0c2b911dbf32297f9", + "type": "github" + }, + "original": { + "owner": "hyprwm", + "repo": "xdg-desktop-portal-hyprland", + "type": "github" + } + }, + "zen": { + "inputs": { + "home-manager": "home-manager_2", + "nixpkgs": "nixpkgs_12" + }, + "locked": { + "lastModified": 1770910552, + "narHash": "sha256-iJ9c0ZewfRRYUflaEOj43n5TWaB6Ezygn2UA/ZHGQJA=", + "owner": "0xc000022070", + "repo": "zen-browser-flake", + "rev": "15656b755cf2e75bd3e67ded6c7709bc09262c27", + "type": "github" + }, + "original": { + "owner": "0xc000022070", + "repo": "zen-browser-flake", + "type": "github" + } + }, + "zlib-src": { + "flake": false, + "locked": { + "lastModified": 1754565515, + "narHash": "sha256-c2RYqHi3hj/ViBzJcYWoNib27GAbq/B1SJUfvG7CPG4=", + "owner": "zlib-ng", + "repo": "zlib-ng", + "rev": "425439062b114a0f6cf625022c41d929c7e879f9", + "type": "github" + }, + "original": { + "owner": "zlib-ng", + "ref": "2.2.5", + "repo": "zlib-ng", + "type": "github" + } + } + }, + "root": "root", + "version": 7 +} diff --git a/flake.nix b/flake.nix new file mode 100644 index 0000000..4184706 --- /dev/null +++ b/flake.nix @@ -0,0 +1,92 @@ +{ + description = "main nixos flake :3"; + + inputs = { + systems.url = "github:nix-systems/default"; + + # WARNING: don't remove duplicate!! (cry64 will fix) + nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable"; + nixpkgs-unstable.url = "github:NixOS/nixpkgs/staging-next"; + + home-manager = { + url = "github:nix-community/home-manager/master"; + inputs.nixpkgs.follows = "nixpkgs"; + }; + + cerulean = { + url = "github:emilelcb/Cerulean"; + inputs = { + systems.follows = "systems"; + nixpkgs.follows = "nixpkgs"; + nixpkgs-unstable.follows = "nixpkgs-unstable"; + }; + }; + + cachyos.url = "github:xddxdd/nix-cachyos-kernel"; + + nix-alien = { + # silly alien :3 + url = "github:thiagokokada/nix-alien"; + # inputs.nixpkgs.follows = "nixpkgs"; + }; + + # wm/de/apps/theming flakes + hyprland-git = { + url = "github:hyprwm/Hyprland/25250527793eb04bb60f103abe7f06370b9f6e1c"; + #url = "github:hyprwm/Hyprland"; + }; + hyprland-plugins = { + url = "github:hyprwm/hyprland-plugins"; + inputs.hyprland.follows = "hyprland-git"; + }; + + nixcats.url = "github:BirdeeHub/nixCats-nvim"; + awww.url = "git+https://codeberg.org/LGFae/awww"; + zen.url = "github:0xc000022070/zen-browser-flake"; + iamb.url = "github:ulyssa/iamb"; + spicetify-nix.url = "github:Gerg-L/spicetify-nix"; + nixcord.url = "github:FlameFlag/nixcord"; + millennium.url = "github:trivaris/millennium?dir=packages/nix"; + + # temp theme until i bother creating my own box { + margin: 0px 12px; +} + +tooltip { + background: @colorbg; + color: @colorfg; + opacity: 0.9; + padding: 4px; + border-radius: 12px; + border: 1px solid @color01; +} +tooltip label { + background: rgba(0, 0, 0, 0); + color: @colorfg; +} + +#clock, +#memory, +#network, +#workspaces, +#taskbar, +#cpu, +#pulseaudio, +#privacy, +#tray, +#custom-media { + background: @colorbg; + color: @colorfg; + opacity: 0.9; + padding: 4px 16px; + border-radius: 32px; + border: 1px solid @color01; +} + +/* +left-side modules +*/ +#workspaces, +#taskbar, +#custom-media { + margin: 4px 4px 4px 0px; +} + +/* +center modules +*/ +#clock { + margin: 4px 0px 4px 0px; +} + +/* +right-side modules +*/ +#memory, +#network, +#cpu, +#pulseaudio, +#tray, +#privacy { + margin: 4px 0px 4px 4px; +} + +#workspaces, +#taskbar { + padding: 0px; +} + +#taskbar.empty { + opacity: 0; + padding: 0px; + margin: 0px; + border: none; +} +#tray.empty { + opacity: 0; + padding: 0; + margin: 0; + border: none; +} + +/* + connects the workspace and taskbar together :3 +*/ +/* +#workspaces { + margin: 4px 0px 4px 12px; + padding: 0px 8px 0px 0px; + border-radius: 100px 0px 0px 100px; + border-width: 1px 0px 1px 1px; +} +#taskbar { + margin: 4px 0px 4px 0px; + padding: 0px 0px 0px 8px; + border-radius: 0px 100px 100px 0px; +} +*/ + +#cpu { + margin: 4px 0 4px 0; + border-radius: 32px 0px 0px 32px; +} +#memory { + margin: 4px 0 4px 0; + border-radius: 0px; + border-width: 1px 0px 1px 0px; +} +#network { + margin: 4px 0 4px 0; + border-radius: 0px 32px 32px 0px; +} + +#workspaces button { + padding: 2px 4px; + border-radius: 32px; + color: @colorfg; +} +#workspaces button:hover { + background: @colorfg; + color: @colorbg; + opacity: 0.8; +} +#workspaces button.active { + background: @colorfg; + color: @colorbg; +} + +#taskbar button { + padding: 2px 4px; + border-radius: 32px; + color: @colorfg; +} +#taskbar button:hover { + background: @colorfg; + color: @colorbg; + opacity: 0.8; +} +#taskbar button.active { + background: @colorfg; + color: @colorbg; +} +/* + icons in each button on the taskbar to correct + for them not being properly centred sometimes :3 +*/ +#taskbar button box image { + padding-left: 2px; +} diff --git a/homes/modules/de/waybar/waybar.nix b/homes/modules/de/waybar/waybar.nix new file mode 100644 index 0000000..7859d4e --- /dev/null +++ b/homes/modules/de/waybar/waybar.nix @@ -0,0 +1,104 @@ +{ config, inputs, lib, pkgs, ... }: +let + unstable = inputs.nixpkgs-unstable.legacyPackages.${pkgs.stdenv.hostPlatform.system}; +in +{ + programs.waybar = { + enable = true; + settings = { + mainBar = { + layer = "top"; + position = "top"; + height = 20; + modules-left = [ "hyprland/workspaces" "wlr/taskbar" "custom/media" ]; + modules-center = [ "clock" ]; + modules-right = [ "cpu" "memory" "network" "pulseaudio" "privacy" "tray" ]; + + # left + "hyprland/workspaces" = { + format = "{id}"; + }; + "wlr/taskbar" = { + format = "{icon}"; + icon-size = 12; + }; + "custom/media" = { + exec = "auroramedia"; + return-type = "json"; + escape = true; + restart-interval = 1; + }; + + # center + "clock" = { + format = "{:%Y %b %a %d %H:%M:%S}"; + interval = 1; + tooltip = false; + }; + + # right + "cpu" = { + format = " {usage}%"; + interval = 1; + }; + "memory" = { + format = " {used:0.1f} / {total:0.1f} GiB"; + interval = 1; + }; + "network" = { + format = "{bandwidthUpBytes}  {bandwidthDownBytes}  {ifname}"; + format-wifi = " {bandwidthUpBytes}  {bandwidthDownBytes} "; + format-ethernet = "󰈀 {bandwidthUpBytes}  {bandwidthDownBytes} "; + format-disconnected = "no internet ~ rawr! ~ x3"; # empty format hides module + interval = 1; + max-length = 32; + }; + "pulseaudio" = { + format = "{icon} {volume}%"; + format-muted = " {volume}%"; + format-icons = { + default = [ + "" + "" + "" + ]; + }; + "scroll-step" = 5; + }; + "privacy" = { + icon-size = 12; + icon-spacing = 5; + transition-duration = 200; + modules = [ + { + type = "screenshare"; + tooltip = true; + tooltip-icon-size = 12; + } + { + type = "audio-in"; + tooltip = true; + tooltip-icon-size = 12; + } + ]; + }; + "tray" = { + icon-size = 12; + spacing = 10; + # fixes spotify not showing up when "close button should minimize the Spotify window" is false + show-passive-items = true; + }; + + # i only enable this for debugging of window rules lol + "hyprland/window" = { + format = "{class} | {title}"; + }; + }; + }; + + style = pkgs.writeTextFile { + name = "waybar-style.css"; + text = builtins.readFile ./style.css; + }; + }; +} diff --git a/homes/modules/programs/iamb/config.toml b/homes/modules/programs/iamb/config.toml new file mode 100644 index 0000000..1577437 --- /dev/null +++ b/homes/modules/programs/iamb/config.toml @@ -0,0 +1,10 @@ +[profiles.auroraveon-matrix] +user_id = "@auroraveon:matrix.org" +url = "https://matrix.org" + +[settings.notifications] +enabled = true +show_message = false + +[image_preview] +protocol.type = "kitty" diff --git a/homes/modules/programs/iamb/iamb.nix b/homes/modules/programs/iamb/iamb.nix new file mode 100644 index 0000000..ab84c56 --- /dev/null +++ b/homes/modules/programs/iamb/iamb.nix @@ -0,0 +1,13 @@ +{ config, inputs, lib, pkgs, ... }: +let + unstable = inputs.nixpkgs-unstable.legacyPackages.${pkgs.stdenv.hostPlatform.system}; +in +{ + home.packages = with pkgs; [ + inputs.iamb.packages."${stdenv.hostPlatform.system}".default + ]; + + xdg.configFile."iamb/config.toml" = { + source = ./config.toml; + }; +} diff --git a/homes/modules/programs/neovim/init.lua b/homes/modules/programs/neovim/init.lua new file mode 100644 index 0000000..b46afbe --- /dev/null +++ b/homes/modules/programs/neovim/init.lua @@ -0,0 +1,69 @@ +vim.g.mapleader = " " + +vim.opt.termguicolors = true -- use terminal colors +vim.opt.relativenumber = true +vim.opt.wrap = false +vim.opt.colorcolumn = "80" + +require("plugins") +require("lsp") + +local uv = vim.loop +local colorscheme_filepath = "/home/aurora/.cache/nvim/neovim-colors" +local colors = {} + +-- function to load colors +local function load_colors() + local new_colors = {} + for line in io.lines(colorscheme_filepath) do + table.insert(new_colors, line) + end + + -- ensure the table has enough entries to avoid indexing issues + if #new_colors >= 18 then + colors = new_colors + require('base16-colorscheme').setup({ + base00 = colors[17], base01 = colors[1], base02 = colors[3], base03 = colors[3], + base04 = colors[5], base05 = colors[8], base06 = colors[5], base07 = colors[8], + base08 = colors[18], base09 = colors[4], base0A = colors[11], base0B = colors[5], + base0C = colors[6], base0D = colors[7], base0E = colors[6], base0F = colors[16], + }) + + -- set colors for blink.cmp's completion menu + vim.api.nvim_set_hl(0, 'BlinkCmpMenu', { bg = colors[17] }) + vim.api.nvim_set_hl(0, 'BlinkCmpMenuBorder', { bg = colors[17], fg = colors[13] }) + vim.api.nvim_set_hl(0, 'BlinkCmpMenuSelection', { bg = colors[15], fg = colors[17] }) + vim.api.nvim_set_hl(0, 'BlinkCmpScrollBarThumb', { bg = colors[18] }) + vim.api.nvim_set_hl(0, 'BlinkCmpKind', { bg = colors[17], fg = colors[14] }) + vim.api.nvim_set_hl(0, 'BlinkCmpLabel', { bg = colors[17], fg = colors[18] }) + vim.api.nvim_set_hl(0, 'BlinkCmpLabelMatch', { bg = colors[17], fg = colors[18] }) + vim.api.nvim_set_hl(0, 'BlinkCmpLabelDetail', { bg = colors[17], fg = colors[18] }) + vim.api.nvim_set_hl(0, 'BlinkCmpLabelDescription', { bg = colors[17], fg = colors[18] }) + else + print("Error: Not enough colors in file") + end +end + +-- initial load +load_colors() + +-- vim.defer_fn(load_colors, 1) + +-- set up a file watcher +local function watch_colorscheme() + local handle + handle = uv.new_fs_event() + if handle then + uv.fs_event_start(handle, colorscheme_filepath, {}, function(err, _, _) + if err then + print("Error watching colorscheme file:", err) + return + end + -- debounce by adding a slight delay before reloading + vim.defer_fn(load_colors, 100) + end) + end +end + +watch_colorscheme() + diff --git a/homes/modules/programs/neovim/lua/lsp/capabilities.lua b/homes/modules/programs/neovim/lua/lsp/capabilities.lua new file mode 100644 index 0000000..9256965 --- /dev/null +++ b/homes/modules/programs/neovim/lua/lsp/capabilities.lua @@ -0,0 +1,59 @@ +local M = {} + +function M.on_attach(_, bufnr) + -- we create a function that lets us more easily define mappings specific + -- for LSP related items. It sets the mode, buffer and description for us each time. + + local nmap = function(keys, func, desc) + if desc then + desc = 'LSP: ' .. desc + end + + vim.keymap.set('n', keys, func, { buffer = bufnr, desc = desc }) + end + + nmap('rn', vim.lsp.buf.rename, '[R]e[n]ame') + nmap('ca', vim.lsp.buf.code_action, '[C]ode [A]ction') + + nmap('gd', vim.lsp.buf.definition, '[G]oto [D]efinition') + + -- NOTE: why are these functions that call the telescope builtin? + -- because otherwise they would load telescope eagerly when this is defined. + -- due to us using the on_require handler to make sure it is available. + if nixCats('general.telescope') then + nmap('gr', function() require('telescope.builtin').lsp_references() end, '[G]oto [R]eferences') + nmap('gI', function() require('telescope.builtin').lsp_implementations() end, '[G]oto [I]mplementation') + nmap('ds', function() require('telescope.builtin').lsp_document_symbols() end, '[D]ocument [S]ymbols') + nmap('ws', function() require('telescope.builtin').lsp_dynamic_workspace_symbols() end, '[W]orkspace [S]ymbols') + nmap('dd', "Telescope diagnostics bufnr=0", '[D]ocument [D]iagnostics') + nmap('wd', "Telescope diagnostics", '[W]orkspace [D]iagnostics') + end -- TODO: someone who knows the builtin versions of these to do instead help me out please. + + nmap('D', vim.lsp.buf.type_definition, 'Type [D]efinition') + nmap('e', vim.diagnostic.open_float, 'Show [E]rror') + + -- See `:help K` for why this keymap + nmap('K', vim.lsp.buf.hover, 'Hover Documentation') + nmap('', vim.lsp.buf.signature_help, 'Signature Documentation') + + -- Lesser used LSP functionality + nmap('gD', vim.lsp.buf.declaration, '[G]oto [D]eclaration') + nmap('wa', vim.lsp.buf.add_workspace_folder, '[W]orkspace [A]dd Folder') + nmap('wr', vim.lsp.buf.remove_workspace_folder, '[W]orkspace [R]emove Folder') + nmap('wl', function() + print(vim.inspect(vim.lsp.buf.list_workspace_folders())) + end, '[W]orkspace [L]ist Folders') + + -- Create a command `:Format` local to the LSP buffer + vim.api.nvim_buf_create_user_command(bufnr, 'Format', function(_) + vim.lsp.buf.format() + end, { desc = 'Format current buffer with LSP' }) + +end + +function M.get(server_name) + local capabilities = require('blink.cmp').get_lsp_capabilities() + + return capabilities +end +return M diff --git a/homes/modules/programs/neovim/lua/lsp/completion.lua b/homes/modules/programs/neovim/lua/lsp/completion.lua new file mode 100644 index 0000000..cdbc9db --- /dev/null +++ b/homes/modules/programs/neovim/lua/lsp/completion.lua @@ -0,0 +1,88 @@ +return { + { + "friendly-snippets", + dep_of = { "blink.cmp" }, + }, + { + "blink.cmp", + event = { "InsertEnter", "CmdlineEnter" }, + on_require = "blink", + load = function (name) + vim.cmd.packadd(name) + end, + after = function(plugin) + local blink = require('blink.cmp') + + blink.setup({ + keymap = { + preset = 'default', + }, + + appearance = { + nerd_font_variant = 'mono', + }, + + sources = { + default = { 'lsp', 'path', 'snippets', 'buffer' }, + providers = { + lsp = { + name = 'LSP', + module = 'blink.cmp.sources.lsp', + enabled = true, + }, + path = { + name = 'Path', + module = 'blink.cmp.sources.path', + enabled = true, + }, + snippets = { + name = 'Snippets', + module = 'blink.cmp.sources.snippets', + enabled = true, + }, + buffer = { + name = 'Buffer', + module = 'blink.cmp.sources.buffer', + enabled = true, + }, + }, + }, + + completion = { + accept = { + auto_brackets = { + enabled = true, + }, + }, + + menu = { + border = 'rounded', + max_height = 12, + scrolloff = 2, + + draw = { + columns = { + { "kind_icon", gap = 1, }, + { "label", "label_description", gap = 1, }, + }, + }, + }, + + documentation = { + auto_show = false, + window = { + border = 'rounded', + }, + }, + }, + + signature = { + enabled = true, + window = { + border = 'rounded', + }, + }, + }) + end + }, +} diff --git a/homes/modules/programs/neovim/lua/lsp/completion.lua.old b/homes/modules/programs/neovim/lua/lsp/completion.lua.old new file mode 100644 index 0000000..f40853f --- /dev/null +++ b/homes/modules/programs/neovim/lua/lsp/completion.lua.old @@ -0,0 +1,203 @@ +---packadd + after/plugin +---@type fun(names: string[]|string) +local load_w_after_plugin = require('nixCatsUtils.lzUtils').make_load_with_after({ "plugin" }) + +-- NOTE: packadd doesnt load after directories. +-- hence, the above function that you can get from luaUtils that exists to make that easy. + +return { + { + "cmp-buffer", + on_plugin = { "nvim-cmp" }, + load = load_w_after_plugin, + }, + { + "cmp-cmdline", + on_plugin = { "nvim-cmp" }, + load = load_w_after_plugin, + }, + { + "cmp-cmdline-history", + on_plugin = { "nvim-cmp" }, + load = load_w_after_plugin, + }, + { + "cmp-nvim-lsp", + on_plugin = { "nvim-cmp" }, + dep_of = { "nvim-lspconfig" }, + load = load_w_after_plugin, + }, + { + "cmp-nvim-lsp-signature-help", + on_plugin = { "nvim-cmp" }, + load = load_w_after_plugin, + }, + { + "cmp-nvim-lua", + on_plugin = { "nvim-cmp" }, + load = load_w_after_plugin, + }, + { + "cmp-path", + on_plugin = { "nvim-cmp" }, + load = load_w_after_plugin, + }, + { + "cmp_luasnip", + on_plugin = { "nvim-cmp" }, + load = load_w_after_plugin, + }, + { + "friendly-snippets", + dep_of = { "nvim-cmp" }, + load = load_w_after_plugin, + }, + { + "lspkind.nvim", + dep_of = { "nvim-cmp" }, + load = load_w_after_plugin, + }, + { + "luasnip", + dep_of = { "nvim-cmp" }, + after = function (plugin) + local luasnip = require 'luasnip' + require('luasnip.loaders.from_vscode').lazy_load() + luasnip.config.setup {} + + local ls = require('luasnip') + + vim.keymap.set({ "i", "s" }, "", function() + if ls.choice_active() then + ls.change_choice(1) + end + end) + end, + }, + { + "nvim-cmp", + -- cmd = { "" }, + event = { "DeferredUIEnter" }, + on_require = { "cmp" }, + -- ft = "", + -- keys = "", + -- colorscheme = "", + after = function (plugin) + -- [[ Configure nvim-cmp ]] + -- See `:help cmp` + local cmp = require 'cmp' + local luasnip = require 'luasnip' + local lspkind = require 'lspkind' + + cmp.setup { + formatting = { + format = lspkind.cmp_format { + mode = 'text', + with_text = true, + maxwidth = 50, -- prevent the popup from showing more than provided characters (e.g 50 will not show more than 50 characters) + ellipsis_char = '...', -- when popup menu exceed maxwidth, the truncated part would show ellipsis_char instead (must define maxwidth first) + + menu = { + buffer = '[BUF]', + nvim_lsp = '[LSP]', + nvim_lsp_signature_help = '[LSP]', + nvim_lsp_document_symbol = '[LSP]', + nvim_lua = '[API]', + path = '[PATH]', + luasnip = '[SNIP]', + }, + }, + }, + snippet = { + expand = function(args) + luasnip.lsp_expand(args.body) + end, + }, + mapping = cmp.mapping.preset.insert { + [''] = cmp.mapping.scroll_docs(-4), + [''] = cmp.mapping.scroll_docs(4), + [''] = cmp.mapping.complete {}, + [''] = cmp.mapping.confirm { + behavior = cmp.ConfirmBehavior.Replace, + select = true, + }, + [''] = cmp.mapping(function(fallback) + if cmp.visible() then + cmp.select_next_item() + elseif luasnip.expand_or_locally_jumpable() then + luasnip.expand_or_jump() + else + fallback() + end + end, { 'i', 's' }), + [''] = cmp.mapping(function(fallback) + if cmp.visible() then + cmp.select_prev_item() + elseif luasnip.locally_jumpable(-1) then + luasnip.jump(-1) + else + fallback() + end + end, { 'i', 's' }), + }, + + sources = cmp.config.sources { + -- The insertion order influences the priority of the sources + { name = 'nvim_lsp'--[[ , keyword_length = 3 ]] }, + { name = 'nvim_lsp_signature_help'--[[ , keyword_length = 3 ]]}, + { name = 'path' }, + { name = 'luasnip' }, + { name = 'buffer' }, + }, + enabled = function() + return vim.bo[0].buftype ~= 'prompt' + end, + experimental = { + native_menu = false, + ghost_text = false, + }, + } + + cmp.setup.filetype('lua', { + sources = cmp.config.sources { + { name = 'nvim_lua' }, + { name = 'nvim_lsp'--[[ , keyword_length = 3 ]]}, + { name = 'nvim_lsp_signature_help'--[[ , keyword_length = 3 ]]}, + { name = 'path' }, + { name = 'luasnip' }, + { name = 'buffer' }, + },{ + { + name = 'cmdline', + option = { + ignore_cmds = { 'Man', '!' }, + }, + }, + }, + }) + + -- Use buffer source for `/` and `?` (if you enabled `native_menu`, this won't work anymore). + cmp.setup.cmdline({ '/', '?' }, { + mapping = cmp.mapping.preset.cmdline(), + sources = { + { name = 'nvim_lsp_document_symbol'--[[ , keyword_length = 3 ]]}, + { name = 'buffer' }, + { name = 'cmdline_history' }, + }, + view = { + entries = { name = 'wildmenu', separator = '|' }, + }, + }) + + -- Use cmdline & path source for ':' (if you enabled `native_menu`, this won't work anymore). + cmp.setup.cmdline(':', { + mapping = cmp.mapping.preset.cmdline(), + sources = cmp.config.sources { + { name = 'cmdline' }, + -- { name = 'cmdline_history' }, + { name = 'path' }, + }, + }) + end, + }, +} diff --git a/homes/modules/programs/neovim/lua/lsp/init.lua b/homes/modules/programs/neovim/lua/lsp/init.lua new file mode 100644 index 0000000..1fae8a8 --- /dev/null +++ b/homes/modules/programs/neovim/lua/lsp/init.lua @@ -0,0 +1,5 @@ +require("lze").load { + { import = "lsp.completion", }, +} + +require("lsp.lsp") diff --git a/homes/modules/programs/neovim/lua/lsp/lsp.lua b/homes/modules/programs/neovim/lua/lsp/lsp.lua new file mode 100644 index 0000000..6548bf3 --- /dev/null +++ b/homes/modules/programs/neovim/lua/lsp/lsp.lua @@ -0,0 +1,123 @@ +local servers = {} + +servers.lua_ls = { + settings = { + Lua = { + formatters = { + ignoreComments = false, + }, + signatureHelp = { enable = true }, + diagnostics = { + globals = { 'nixCats', 'vim' }, + -- disable = { 'missing-fields' }, + }, + workspace = { + -- make the server aware of the neovim runtime files + library = vim.api.nvim_get_runtime_file("", true), + checkThirdParty = false, + }, + }, + telemetry = { enabled = false }, + }, +} + +local rust_analyzer_cmd = os.getenv("RUST_ANALYZER_CMD") +servers.rust_analyzer = { + cmd = { rust_analyzer_cmd }, + settings = { + server = { + -- For debugging rust-analyzer, to see log location do :LspInfo in neovim + -- extraEnv = { {["RA_LOG"]="project_model=debug"} }, + }, + cargo = { + allFeatures = false, + allTargets = false, + buildScripts = { enable = true }, + target = "x86_64-unknown-linux-gnu", + }, + diagnostics = { + enable = true, + }, + }, +} + +servers.zls = { + settings = {}, +} + +local elixir_ls_cmd = os.getenv("ELIXIR_LS_CMD") +servers.elixirls = { + cmd = { elixir_ls_cmd }, + settings = {}, +} + +servers.gleam = { + settings = {}, +} + +local java_home = os.getenv("JAVA_HOME") +servers.jdtls = { + settings = { + java = { + contentProvider = { preferred = 'fernflower' }, + configuration = { + runtimes = { + { + name = "OpenJDK 17", + path = os.getenv("OPENJDK_17"), + }, + { + name = "OpenJDK 21", + path = os.getenv("OPENJDK_21"), + }, + } + } + }, + } +} + +-- Taken from nixCats example: +-- If you were to comment out this autocommand +-- and instead pass the on attach function directly to +-- nvim-lspconfig, it would do the same thing. +-- come to think of it, it might be better because then lspconfig doesnt have to be called before lsp attach? +-- but you would still end up triggering on a FileType event anyway, so, it makes little difference. +vim.api.nvim_create_autocmd('LspAttach', { + group = vim.api.nvim_create_augroup('nixCats-lsp-attach', { clear = true }), + callback = function(event) + require('lsp.capabilities').on_attach(vim.lsp.get_client_by_id(event.data.client_id), event.buf) + end +}) + +require("lze").load { + { + "nvim-lspconfig", + event = "FileType", + after = function(plugin) + -- Just register configs, don't enable yet + for server_name, cfg in pairs(servers) do + vim.lsp.config(server_name, { + capabilities = require('lsp.capabilities').get(server_name), + settings = (cfg or {}).settings, + filetypes = (cfg or {}).filetypes, + cmd = (cfg or {}).cmd, + root_pattern = (cfg or {}).root_pattern, + }) + end + + -- Enable on-demand per filetype + for server_name, cfg in pairs(servers) do + local filetypes = cfg.filetypes or vim.lsp.config[server_name].filetypes + if filetypes then + vim.api.nvim_create_autocmd('FileType', { + pattern = filetypes, + callback = function() + vim.lsp.enable(server_name) + end, + }) + end + end + end, + }, +} + diff --git a/homes/modules/programs/neovim/lua/nixCatsUtils/lzUtils.lua b/homes/modules/programs/neovim/lua/nixCatsUtils/lzUtils.lua new file mode 100644 index 0000000..0667276 --- /dev/null +++ b/homes/modules/programs/neovim/lua/nixCatsUtils/lzUtils.lua @@ -0,0 +1,135 @@ +--[[ + This directory is the luaUtils template. + You can choose what things from it that you would like to use. + And then delete the rest. + Everything in this directory is optional. +--]] + +local M = {} +-- NOTE: This file contains 2 utilities for making good use of lze and lz.n with nixCats +-- The function for loading after directories is useful for both plugins, and also for lazy loading without a plugin, +-- but the custom handler will only work with lze. +-- If you dont use these plugins, you probably don't need this file. + +---This function is useful for sourcing the after directories of lazily loaded plugins +---because vim.cmd.packadd does not do this for you. +--- +---This might be useful when doing lazy loading the vanilla way +---as well as when using plugins like lz.n for lazy loading +---It is primarily useful for lazily loading nvim-cmp sources, +---as they often rely on the after directory to work +--- +---Recieves the names of directories from a plugin's after directory +---that you wish to source files from. +---Will return a load function that can take a name, or list of names, +---and will load a plugin and its after directories. +---The function returned is a suitable substitute for the load field of a plugin spec. +--- +---Only makes sense for plugins added via optionalPlugins +---or some other opt directory on your packpath +--- +---e.g. in the following example: +---load_with_after_plugin will load the plugin names it is given, and their after/plugin dir +--- +---local load_with_after_plugin = require('nixCatsUtils').make_load_with_after({ 'plugin' }) +---load_with_after_plugin('some_plugin') +---@overload fun(dirs: string[]|string): fun(names: string|string[]) +---It also optionally recieves a function that should load a plugin and return its path +---for if the plugin is not on the packpath, or return nil +---to load from the packpath or nixCats list as normal +---@overload fun(dirs: string[]|string, load: fun(name: string):string|nil): fun(names: string|string[]) +function M.make_load_with_after(dirs, load) + dirs = (type(dirs) == "table" and dirs) or { dirs } + local fromPackpath = function(name) + for _, packpath in ipairs(vim.opt.packpath:get()) do + local plugin_path = vim.fn.globpath(packpath, "pack/*/opt/" .. name, nil, true, true) + if plugin_path[1] then + return plugin_path[1] + end + end + return nil + end + ---@param plugin_names string[]|string + return function(plugin_names) + local names = type(plugin_names) == "table" and plugin_names or { plugin_names } + local to_source = {} + for _, name in ipairs(names) do + if type(name) == "string" then + local path = (type(load) == "function" and load(name)) or nil + if type(path) == "string" then + table.insert(to_source, { name = name, path = path }) + else + local ok, err = pcall(vim.cmd.packadd, name) + if ok then + table.insert(to_source, { name = name, path = nil }) + else + vim.notify( + '"packadd ' + .. name + .. '" failed, and path provided by custom load function (if provided) was not a string\n' + .. err, + vim.log.levels.WARN, + { title = "nixCatsUtils.load_with_after" } + ) + end + end + else + vim.notify( + "plugin name was not a string and was instead of value:\n" .. vim.inspect(name), + vim.log.levels.WARN, + { title = "nixCatsUtils.load_with_after" } + ) + end + end + for _, info in pairs(to_source) do + local plugpath = info.path or vim.tbl_get(package.loaded, "nixCats", "pawsible", "allPlugins", "opt", info.name) or fromPackpath(info.name) + if type(plugpath) == "string" then + local afterpath = plugpath .. "/after" + for _, dir in ipairs(dirs) do + if vim.fn.isdirectory(afterpath) == 1 then + local plugin_dir = afterpath .. "/" .. dir + if vim.fn.isdirectory(plugin_dir) == 1 then + local files = vim.fn.glob(plugin_dir .. "/*", false, true) + for _, file in ipairs(files) do + if vim.fn.filereadable(file) == 1 then + vim.cmd("source " .. file) + end + end + end + end + end + end + end + end +end + +-- A nixCats specific lze handler that you can use to conditionally enable by category easier. +-- at the start of your config, register with +-- require('lze').register_handlers(require('nixCatsUtils.lzUtils').for_cat) +-- before any calls to require('lze').load using the handler have been made. +-- accepts: +-- for_cat = { "your" "cat" }; for_cat = { cat = { "your" "cat" }, default = bool } +-- for_cat = "your.cat"; for_cat = { cat = "your.cat", default = bool } +-- where default is an alternate value for when nixCats was NOT used to install the config +M.for_cat = { + spec_field = "for_cat", + set_lazy = false, + modify = function(plugin) + if type(plugin.for_cat) == "table" then + if plugin.for_cat.cat ~= nil then + if vim.g[ [[nixCats-special-rtp-entry-nixCats]] ] ~= nil then + plugin.enabled = (nixCats(plugin.for_cat.cat) and true) or false + else + plugin.enabled = nixCats(plugin.for_cat.default) + end + else + plugin.enabled = (nixCats(plugin.for_cat) and true) or false + end + else + plugin.enabled = (nixCats(plugin.for_cat) and true) or false + end + return plugin + end, +} + +return M diff --git a/homes/modules/programs/neovim/lua/plugins/dressing.lua b/homes/modules/programs/neovim/lua/plugins/dressing.lua new file mode 100644 index 0000000..bca1775 --- /dev/null +++ b/homes/modules/programs/neovim/lua/plugins/dressing.lua @@ -0,0 +1,5 @@ +return { + { + "dressing.nvim" + }, +} diff --git a/homes/modules/programs/neovim/lua/plugins/fyler.lua b/homes/modules/programs/neovim/lua/plugins/fyler.lua new file mode 100644 index 0000000..dd2bdab --- /dev/null +++ b/homes/modules/programs/neovim/lua/plugins/fyler.lua @@ -0,0 +1,15 @@ +return { + { + "fyler.nvim", + cmd = { "Fyler" }, + keys = { + { "tf", function() return require('fyler').toggle({ kind = "split_right" }) end, mode = {"n"}, desc = 'Open [F]yler' }, + }, + load = function (name) + vim.cmd.packadd(name) + end, + after = function(plugin) + local fyler = require("fyler").setup() + end, + }, +} diff --git a/homes/modules/programs/neovim/lua/plugins/init.lua b/homes/modules/programs/neovim/lua/plugins/init.lua new file mode 100644 index 0000000..20c38db --- /dev/null +++ b/homes/modules/programs/neovim/lua/plugins/init.lua @@ -0,0 +1,8 @@ +require("lze").load { + { import = "plugins.dressing", }, + { import = "plugins.telescope", }, + { import = "plugins.treesitter", }, + { import = "plugins.fyler", }, + { import = "plugins.mini-hipatterns", }, + --{ import = "plugins.neocord", }, +} diff --git a/homes/modules/programs/neovim/lua/plugins/mini-hipatterns.lua b/homes/modules/programs/neovim/lua/plugins/mini-hipatterns.lua new file mode 100644 index 0000000..a7c6c2a --- /dev/null +++ b/homes/modules/programs/neovim/lua/plugins/mini-hipatterns.lua @@ -0,0 +1,76 @@ +return { + { + "mini.hipatterns", + after = function(plugin) + local hipatterns = require("mini.hipatterns") + + -- Returns hex color group for matching short hex color. + -- + ---@param match string + ---@return string + local hex_color_short = function(_, match) + local style = 'fg' -- 'fg' or 'bg', for extmark_opts_inline use 'fg' + local r, g, b = match:sub(2, 2), match:sub(3, 3), match:sub(4, 4) + local hex = string.format('#%s%s%s%s%s%s', r, r, g, g, b, b) + return hipatterns.compute_hex_color_group(hex, style) + end + + -- Returns hex color group for matching alpha hex color. + -- + ---@param match string + ---@return string + local hex_color_alpha = function(_, match) + local style = 'fg' -- 'fg' or 'bg', for extmark_opts_inline use 'fg' + local r, g, b = match:sub(2, 3), match:sub(4, 5), match:sub(6, 7) + local hex = string.format('#%s%s%s', r, g, b) + return hipatterns.compute_hex_color_group(hex, style) + end + + -- Returns extmark opts for highlights with virtual inline text. + -- + ---@param data table Includes `hl_group`, `full_match` and more. + ---@return table + local extmark_opts_inline = function(_, _, data) + return { + virt_text = { { '󰧞', data.hl_group } }, + virt_text_pos = 'inline', + right_gravity = false, + } + end + + -- Returns extmark opts for highlights with virtual inline text. + -- + ---@param data table Includes `hl_group`, `full_match` and more. + ---@return table + local extmark_opts_inline_alpha = function(_, _, data) + return { + virt_text = { { '󱡓', data.hl_group } }, + virt_text_pos = 'inline', + right_gravity = false, + } + end + + hipatterns.setup({ + highlighters = { + -- #rrggbb + hex_color = hipatterns.gen_highlighter.hex_color({ + style = "inline", + inline_text = '󰧞', + }), + -- #rgb + hex_color_short = { + pattern = "#%x%x%x%f[%X]", + group = hex_color_short, + extmark_opts = extmark_opts_inline, + }, + -- #rrggbbaa + hex_color_alpha = { + pattern = "#%x%x%x%x%x%x%x%x%f[%X]", + group = hex_color_alpha, + extmark_opts = extmark_opts_inline_alpha, + }, + }, + }) + end, + }, +} diff --git a/homes/modules/programs/neovim/lua/plugins/neocord.lua b/homes/modules/programs/neovim/lua/plugins/neocord.lua new file mode 100644 index 0000000..5efb242 --- /dev/null +++ b/homes/modules/programs/neovim/lua/plugins/neocord.lua @@ -0,0 +1,5 @@ +return { + { + "neocord", + }, +} diff --git a/homes/modules/programs/neovim/lua/plugins/telescope.lua b/homes/modules/programs/neovim/lua/plugins/telescope.lua new file mode 100644 index 0000000..919f3bd --- /dev/null +++ b/homes/modules/programs/neovim/lua/plugins/telescope.lua @@ -0,0 +1,36 @@ +return { + { + "telescope.nvim", + cmd = { "Telescope" }, + keys = { + { "f", function() return require('telescope.builtin').find_files() end, mode = {"n"}, desc = 'Telescope search [F]iles' }, + { "tr", function() return require('telescope.builtin').oldfiles() end, mode = {"n"}, desc = '[T]elescope search [R]ecent files' }, + { "ts", function() return require('telescope.builtin').live_grep() end, mode = {"n"}, desc = '[T]elescope [S]earch cwd with grep' }, + { "tw", function() return require('telescope.builtin').grep_string() end, mode = {"n"}, desc = '[T]elescope search current [W]ord' }, + { "tk", function() return require('telescope.builtin').keymaps() end, mode = {"n"}, desc = '[T]elescope search [K]eymaps' }, + { "tb", function() return require('telescope.builtin').buffers() end, mode = {"n"}, desc = '[T]elescope search [B]uffers' }, + }, + load = function (name) + vim.cmd.packadd(name) + vim.cmd.packadd("telescope-fzf-native.nvim") + end, + after = function(plugin) + local telescope = require("telescope") + local actions = require("telescope.actions") + + telescope.setup { + defaults = { + mappings = { + i = { + [""] = actions.move_selection_previous, -- move to prev result + [""] = actions.move_selection_next, -- move to next result + [""] = actions.send_selected_to_qflist + actions.open_qflist + } + } + } + } + + pcall(telescope.load_extension, "fzf") + end, + }, +} diff --git a/homes/modules/programs/neovim/lua/plugins/treesitter.lua b/homes/modules/programs/neovim/lua/plugins/treesitter.lua new file mode 100644 index 0000000..489ecf9 --- /dev/null +++ b/homes/modules/programs/neovim/lua/plugins/treesitter.lua @@ -0,0 +1,95 @@ +-- to help me write this after nvim-treesitter updated, i used: +-- https://github.com/BirdeeHub/nixCats-nvim/blob/3c9bc4d7123e1b48d92f25ba505b889af541e897/templates/example/lua/myLuaConf/plugins/treesitter.lua + +return { + { + "nvim-treesitter", + lazy = false, + after = function (plugin) + --@param buf integer + --@param language string + local function treesitter_try_attach(buf, language) + --check if parser exists and load it + if not vim.treesitter.language.add(language) then + return + end + + -- enables syntax highlight and other treesitter features + vim.treesitter.start(buf, language) + + -- enables treesitter based folds + vim.wo.foldexpr = "v:lua.vim.treesitter.foldexpr()" + + -- enables treesiter based indentation + vim.bo.indentexpr = "v:lua.require'nvim-treesitter'.indentexpr()" + end + + local available_parsers = require("nvim-treesitter").get_available() + vim.api.nvim_create_autocmd("FileType", { + callback = function(args) + local buf, filetype = args.buf, args.match + local language = vim.treesitter.language.get_lang(filetype) + if not language then + return + end + + local installed_parsers = require("nvim-treesitter").get_installed("parsers") + + if vim.tbl_contains(installed_parsers, language) then + -- enable the parser if it is installed + treesitter_try_attach(buf, language) + elseif vim.tbl_contains(available_parsers, language) then + -- if a parser is available in `nvim-treesitter` enable it after ensuring it is installed + require("nvim-treesitter").install(language):await(function() + treesitter_try_attach(buf, language) + end) + else + -- try to enable treesitter features in case the parser exists but is not available from `nvim-treesitter` + treesitter_try_attach(buf, language) + end + end, + }) + end, + }, + { + "nvim-treesitter-textobjects", + lazy = false, + before = function(plugin) + vim.g.no_plugin_maps = true + end, + after = function(plugin) + require("nvim-treesitter-textobjects").setup { + select = { + lookahead = true, + selection_modes = { + ['@parameter.outer'] = 'v', -- charwise + ['@function.outer'] = 'V', -- linewise + }, + include_surrounding_whitespace = false, + }, + } + + -- keymaps + vim.keymap.set({ "x", "o" }, "am", function() + require "nvim-treesitter-textobjects.select".select_textobject("@function.outer", "textobjects") + end) + vim.keymap.set({ "x", "o" }, "im", function() + require "nvim-treesitter-textobjects.select".select_textobject("@function.inner", "textobjects") + end) + vim.keymap.set({ "x", "o" }, "ac", function() + require "nvim-treesitter-textobjects.select".select_textobject("@class.outer", "textobjects") + end) + vim.keymap.set({ "x", "o" }, "ic", function() + require "nvim-treesitter-textobjects.select".select_textobject("@class.inner", "textobjects") + end) + -- You can also use captures from other query groups like `locals.scm` + vim.keymap.set({ "x", "o" }, "as", function() + require "nvim-treesitter-textobjects.select".select_textobject("@local.scope", "locals") + end) + + -- NOTE: for more textobjects options, see the following link. + -- This template is using the new `main` branch of the repo. + -- https://github.com/nvim-treesitter/nvim-treesitter-textobjects/tree/main + end, + }, +} diff --git a/homes/modules/programs/neovim/nixcats.nix b/homes/modules/programs/neovim/nixcats.nix new file mode 100644 index 0000000..169b2f8 --- /dev/null +++ b/homes/modules/programs/neovim/nixcats.nix @@ -0,0 +1,213 @@ +{ config, lib, inputs, upkgs, ... }: let + utils = inputs.nixcats.utils; +in { + imports = [ + inputs.nixcats.homeModule + ]; + + config = { + # this value, nixCats is the defaultPackageName you pass to mkNixosModules + # it will be the namespace for your options. + nixCats = { + enable = true; + nixpkgs_version = inputs.nixpkgs; + # this will add the overlays from ./overlays and also, + # add any plugins in inputs named "plugins-pluginName" to pkgs.neovimPlugins + # It will not apply to overall system, just nixCats. + addOverlays = /* (import ./overlays inputs) ++ */ [ + (utils.standardPluginOverlay inputs) + ]; + # see the packageDefinitions below. + # This says which of those to install. + packageNames = [ "auroranvim" ]; + + luaPath = "${./.}"; + + # the .replace vs .merge options are for modules based on existing configurations, + # they refer to how multiple categoryDefinitions get merged together by the module. + # for useage of this section, refer to :h nixCats.flake.outputs.categories + categoryDefinitions.replace = ({ pkgs, settings, categories, extra, name, mkNvimPlugin, ... }@packageDef: { + lspsAndRuntimeDeps = { + general = with pkgs; [ + ripgrep + fd + ]; + treesitter = with pkgs; [ + tree-sitter + ]; + lang = with pkgs; { + lua = [ + lua-language-server + ]; + nix = [ + nil + nix-doc + ]; + rust = with pkgs; [ + cargo + rust-analyzer + ]; + zig = with pkgs; [ + upkgs.zls # FIX: using upkgs version as zls is broken rn ;-; + ]; + elixir = with pkgs; [ + elixir-ls + ]; + gleam = with pkgs; [ + gleam + ]; + java = with pkgs; [ + jdt-language-server + javaPackages.compiler.openjdk17 + javaPackages.compiler.openjdk21 + ]; + }; + }; + + startupPlugins = { + general = with pkgs.vimPlugins; [ + lze + plenary-nvim + nvim-notify + nvim-web-devicons + base16-nvim + mini-nvim + ]; + treesitter = with pkgs.vimPlugins; [ + nvim-treesitter-textobjects + nvim-treesitter.withAllGrammars + ]; + }; + optionalPlugins = { + general = with pkgs.vimPlugins; [ + ]; + ui = with pkgs.vimPlugins; [ + dressing-nvim + ]; + qol = with pkgs.vimPlugins; [ + undotree + mini-hipatterns + ]; + telescope = with pkgs.vimPlugins; [ + telescope-nvim + telescope-fzf-native-nvim + telescope-ui-select-nvim + ]; + fyler = with pkgs.vimPlugins; [ + fyler-nvim + ]; + lsp = with pkgs.vimPlugins; [ + nvim-lspconfig + ]; + completion = with pkgs.vimPlugins; [ + blink-cmp + nvim-cmp + luasnip + friendly-snippets + cmp_luasnip + cmp-buffer + cmp-path + cmp-nvim-lua + cmp-nvim-lsp + cmp-cmdline + cmp-nvim-lsp-signature-help + cmp-cmdline-history + lspkind-nvim + ]; + lang = with pkgs.vimPlugins; { + java = [ + nvim-jdtls + ]; + }; + discord = with pkgs.vimPlugins; [ + neocord # discord presence plugin :3 + ]; + }; + + # shared libraries to be added to LD_LIBRARY_PATH + # variable available to nvim runtime + sharedLibraries = { + general = with pkgs; [ + # libgit2 + ]; + }; + environmentVariables = { + lang = { + rust = { + # it literally won't see the rust-analyzer provided to it + # if you don't use an envrionment variable to tell it + RUST_ANALYZER_CMD = "${pkgs.rust-analyzer}/bin/rust-analyzer"; + }; + elixir = { + ELIXIR_LS_CMD = "${pkgs.elixir-ls}/scripts/language_server.sh"; + }; + java = { + JAVA_HOME = "${pkgs.javaPackages.compiler.openjdk17}"; + OPENJDK_17 = "${pkgs.javaPackages.compiler.openjdk17}"; + OPENJDK_21 = "${pkgs.javaPackages.compiler.openjdk21}"; + }; + }; + }; + extraWrapperArgs = { + test = [ + '' --set CATTESTVAR2 "It worked again!"'' + ]; + }; + # lists of the functions you would have passed to + # python.withPackages or lua.withPackages + + # get the path to this python environment + # in your lua config via + # vim.g.python3_host_prog + # or run from nvim terminal via :!-python3 + extraPython3Packages = { + test = (_:[]); + }; + # populates $LUA_PATH and $LUA_CPATH + extraLuaPackages = { + test = [ (_:[]) ]; + }; + }); + + # see :help nixCats.flake.outputs.packageDefinitions + packageDefinitions.replace = { + # these are the names of your packages + # you can include as many as you wish. + auroranvim = {pkgs , ... }: { + # they contain a settings set defined above + # see :help nixCats.flake.outputs.settings + settings = { + wrapRc = true; + # IMPORTANT: + # your alias may not conflict with your other packages. + aliases = [ "auroravim" "auravim" "foxyvim" "avix" "fvix" "auim" ]; + }; + # and a set of categories that you want + # (and other information to pass to lua) + categories = { + general = true; + + ui = true; + qol = true; + telescope = true; + fyler = true; + lsp = true; + completion = true; + treesitter = true; + discord = false; + + lang = { + lua = true; + nix = true; + rust = true; + zig = true; + elixir = true; + gleam = true; + java = true; + }; + }; + }; + }; + }; + }; +} diff --git a/homes/modules/programs/nixcord.nix b/homes/modules/programs/nixcord.nix new file mode 100644 index 0000000..d1d9e2b --- /dev/null +++ b/homes/modules/programs/nixcord.nix @@ -0,0 +1,250 @@ +{ config, inputs, lib, pkgs, ... }: +{ + imports = [ + inputs.nixcord.homeModules.nixcord + ]; + + programs.nixcord = { + enable = true; + equibop.enable = true; + + discord = { + vencord.enable = false; + equicord.enable = true; + }; + + config = { + enabledThemes = [ + "aurorastheme.css" + "base16-colors.css" + ]; + plugins = { + anonymiseFileNames = { + enable = true; + anonymiseByDefault = true; + method = 0; + randomisedLength = 16; + }; + betterSessions = { + backgroundCheck = true; + checkInterval = 1; + }; + biggerStreamPreview.enable = true; + callTimer.enable = true; + fixYoutubeEmbeds.enable = true; + fixSpotifyEmbeds.enable = true; + tidalEmbeds.enable = true; + youtubeAdblock.enable = true; + followVoiceUser.enable = true; + friendsSince.enable = true; + ircColors = { + enable = true; + lightness = 80; + memberListColors = true; + applyColorOnlyInDms = false; + applyColorOnlyToUsersWithoutColor = false; + }; + messageLogger = { + enable = true; + showEditDiffs = true; + separatedDiffs = false; + }; + fakeNitro.enable = true; + ghosted.enable = true; + noF1.enable = true; + noMaskedUrlPaste.enable = true; + messageLatency = { + enable = false; + latency = -1; + showMillis = true; + }; + openInApp.enable = true; + crashHandler.enable = true; + disableCallIdle.enable = true; + experiments.enable = true; + expressionCloner.enable = true; + favoriteGifSearch.enable = true; + fixImagesQuality.enable = true; + forceOwnerCrown.enable = true; + forwardAnywhere.enable = true; + spotifyCrack.enable = true; + spotifyShareCommands.enable = true; + spotifyControls.enable = true; + fullUserInChatbox.enable = true; + gifPaste.enable = true; + ignoreActivities = { + enable = true; + ignorePlaying = true; + ignoreStreaming = true; + ignoreListening = true; + ignoreWatching = true; + ignoreCompeting = true; + }; + imageLink.enable = true; + imageZoom.enable = true; + memberCount.enable = true; + noDevtoolsWarning.enable = true; + noUnblockToJump.enable = true; + pauseInvitesForever.enable = true; + permissionsViewer.enable = true; + pictureInPicture = { + enable = true; + loop = true; + }; + platformIndicators.enable = true; + previewMessage.enable = true; + relationshipNotifier.enable = true; + revealAllSpoilers.enable = true; + serverInfo.enable = true; + serverListIndicators.enable = true; + showHiddenChannels.enable = true; + showHiddenThings.enable = true; + showTimeoutDuration = { + enable = true; + displayStyle = "tooltip"; + }; + silentTyping = { + enable = true; + enabledGlobally = false; + }; + startupTimings.enable = true; + typingIndicator.enable = true; + unlockedAvatarZoom = { + enable = true; + zoomMultiplier = 4.0; + }; + userMessagesPronouns.enable = true; + validUser.enable = true; + validReply.enable = true; + viewIcons = { + enable = true; + format = "webp"; + imgSize = "4096"; + }; + voiceChatDoubleClick.enable = true; + voiceDownload.enable = true; + voiceMessages = { + enable = true; + noiseSuppression = false; + echoCancellation = true; + }; + volumeBooster.enable = true; + webKeybinds.enable = true; + webScreenShareFixes.enable = true; + whoReacted.enable = true; + whosWatching.enable = true; + quickReply.enable = true; + questCompleter.enable = true; + shikiCodeblocks = { + enable = true; + useDevIcon = "COLOR"; + theme = "https://raw.githubusercontent.com/shikijs/textmate-grammars-themes/2d87559c7601a928b9f7e0f0dda243d2fb6d4499/packages/tm-themes/themes/kanagawa-wave.json"; + }; + }; + }; + }; + + programs.nixcord.config.plugins.PinDMs = { + enable = true; + canCollapseDmSection = true; + userBasedCategoryList = { + "1202666382760607774" = [ + { + id = "i9dflmraztc"; + name = "🏳️‍⚧️ girlfriends!!! :3 🏳️‍⚧️"; + color = 16359423; + collapsed = false; + channels = [ + "1436964273162289185" + "1436988320474206311" + "1449837047383855119" + "1436965652861685891" + "1436968495190642722" + "1465424321919975454" + ]; + } + { + id = "p2v1f5y9zbd"; + name = "🦋 best frens <3 🦋"; + color = 10223511; + collapsed = false; + channels = [ + "1436985374286155799" + "1436965657076826222" + "1429921297160212681" + "1394808379381387385" + "1433593753183977545" + "1438254055452446881" + "1436966389549236376" + "1202678007026819134" + "1437151552224624660" + "1441906462094921789" + "1450340272079769712" + "1458123717124165764" + "1436975341129306155" + "1461885176534794427" + "1462155159470866443" + "1468735915076878407" + ]; + } + { + id = "c0mg5w635j8"; + name = "🏳️‍🌈 close frens x3 🏳️‍🌈"; + color = 10780927; + collapsed = false; + channels = [ + "1437077103873888290" + "1436975346338762823" + "1437123353101205590" + "1441516692164575283" + "1419557866502754334" + "1436985041203892315" + "1438071327515742229" + ]; + } + { + id = "ghjrq5el3b"; + name = "frens :3"; + color = 7334399; + collapsed = false; + channels = [ + "1437007154132422701" + "1437006448948416526" + "1446781617422209068" + "1444723474835837103" + "1437098569483161721" + "1437237573146771469" + "1436973705421914123" + "1437135359359320125" + "1438010723837022343" + "1440553969461104740" + "1437097082887475201" + "1447222320015085740" + "1462624704027164824" + "1449513783893692589" + "1463737720961634461" + "1463000874392748249" + "1461929299727749145" + "1436984534712451105" + "1436983282582683813" + "1437283420312047659" + "1437089201651847315" + "1468324280445046824" + "1467307140443148288" + ]; + } + { + id = "zbmj00xw7d8"; + name = "goop chats"; + color = 14876549; + collapsed = false; + channels = [ + "1437132769141719040" + "1445549416516681902" + "1458849972815663209" + ]; + } + ]; + }; + }; +} diff --git a/homes/modules/programs/spicetify.nix b/homes/modules/programs/spicetify.nix new file mode 100644 index 0000000..896d0b7 --- /dev/null +++ b/homes/modules/programs/spicetify.nix @@ -0,0 +1,26 @@ +{ inputs, lib, pkgs, ... }: +let + spicetifyPkgs = inputs.spicetify-nix.legacyPackages.${pkgs.stdenv.hostPlatform.system}; +in { + imports = [ inputs.spicetify-nix.homeManagerModules.default ]; + programs.spicetify = { + enable = true; + + enabledExtensions = with spicetifyPkgs.extensions; [ + adblock + shuffle + keyboardShortcut + ({ + src = (pkgs.fetchFromGitHub { + owner = "Spikerko"; + repo = "spicy-lyrics"; + rev = "568c83326aa6aba6ded28c95df6fcfb25cab3648"; + hash = "sha256-lej93EDzGkmyrg5YMdPSqzrxlIfKsfaDBZosTvxoTNw="; + }) + /builds; + name = "spicy-lyrics.mjs"; + }) + ]; + theme = spicetifyPkgs.themes.comfy; + colorScheme = "Sakura"; + }; +} diff --git a/homes/modules/programs/yazi/yazi.nix b/homes/modules/programs/yazi/yazi.nix new file mode 100644 index 0000000..54c26be --- /dev/null +++ b/homes/modules/programs/yazi/yazi.nix @@ -0,0 +1,86 @@ +{ config, inputs, lib, pkgs, ... }: +{ + # optional dependencies can be found here: + # https://yazi-rs.github.io/docs/installation/ + home.packages = with pkgs; [ # dependencies + ripdrag + ]; + + programs.yazi = { + enable = true; + enableZshIntegration = false; # i mod"if"ied the script in my .zshrc + + settings = { + mgr = { + show_hidden = true; + }; + log = { + enabled = false; + }; + }; + + keymap = { + mgr.prepend_keymap = [ + # drag and drop!! + { on = [ "" ]; run = ''shell "ripdrag -x -a \"$@\"" --confirm''; } + # copy hovered file to clipboard + { on = [ "" ]; run = ''shell -- path=%h; echo "file://$path" | wl-copy -t text/uri-list''; } + ]; + }; + + # they changed it to custom colors, i don't like that, so this is the config + # i did like: + # https://github.com/sxyazi/yazi/blob/97d0c6bb23df413f4add8b888071233c912c49a3/yazi-config/preset/theme-dark.toml + theme = { + icon = { + dirs = [ + { name = ".config"; text = ""; fg = "red"; } + { name = ".git"; text = ""; fg = "blue"; } + { name = ".github"; text = ""; fg = "blue"; } + { name = ".npm"; text = ""; fg = "blue"; } + { name = "Desktop"; text = ""; fg = "magenta"; } + { name = "Documents"; text = ""; fg = "magenta"; } + { name = "Downloads"; text = ""; fg = "red"; } + { name = "Library"; text = ""; fg = "magenta"; } + { name = "Movies"; text = ""; fg = "magenta"; } + { name = "Music"; text = ""; fg = "magenta"; } + { name = "Pictures"; text = ""; fg = "magenta"; } + { name = "Public"; text = ""; fg = "magenta"; } + { name = "Videos"; text = ""; fg = "red"; } + ]; + conds = [ + # special files + { "if" = "orphan"; text = ""; } + { "if" = "link"; text = ""; } + { "if" = "block"; text = ""; } + { "if" = "char"; text = ""; } + { "if" = "fifo"; text = ""; } + { "if" = "sock"; text = ""; } + { "if" = "sticky"; text = ""; } + { "if" = "dummy"; text = ""; } + + # fallback + { "if" = "dir"; text = ""; fg = "blue"; } + { "if" = "exec"; text = ""; } + { "if" = "!dir"; text = ""; } + ]; + }; + }; + }; + + # helped me fix it not working: + # https://github.com/hunkyburrito/xdg-desktop-portal-termfilechooser/issues/56 + # also, the portal must be enabled in configuration.nix + # i can't seem to get it working any other way + xdg.configFile."xdg-desktop-portal-termfilechooser/config" = { + force = true; + text = '' + [filechooser] + cmd=${pkgs.xdg-desktop-portal-termfilechooser}/share/xdg-desktop-portal-termfilechooser/yazi-wrapper.sh + default_dir=$HOME + env=TERMCMD='kitty --title filechooser' + open_mode=suggested + save_mode=last + ''; + }; +} diff --git a/homes/modules/scripts/task-manager.sh b/homes/modules/scripts/task-manager.sh new file mode 100755 index 0000000..068eb79 --- /dev/null +++ b/homes/modules/scripts/task-manager.sh @@ -0,0 +1,2 @@ +#!/usr/bin/env bash +pkill -f "kitty --title btop -e btop" || { kitty --title btop -e btop & disown; } diff --git a/homes/modules/services/dunst.nix b/homes/modules/services/dunst.nix new file mode 100644 index 0000000..31c3453 --- /dev/null +++ b/homes/modules/services/dunst.nix @@ -0,0 +1,33 @@ +{ config, inputs, pkgs, ... }: +let + unstable = inputs.nixpkgs-unstable.legacyPackages.${pkgs.stdenv.hostPlatform.system}; +in +{ + home.packages = with pkgs; [ + libnotify + ]; + + services.dunst = { + enable = true; + settings = { + global = { + monitor = "DP-3"; # second monitor + origin = "top-left"; + layer = "top"; # above windows, below fullscreen + offset = "(16, 24)"; + + padding = 4; + gap_size = 4; + frame_width = 2; + + font = "DepartureMono Nerd Font 8"; + + corner_radius = 12; + icon_corner_radius = 12; + + progress_bar = true; + progress_bar_height = 16; + }; + }; + }; +} diff --git a/homes/modules/services/keepassxc/keepassxc.ini b/homes/modules/services/keepassxc/keepassxc.ini new file mode 100644 index 0000000..e9ab2aa --- /dev/null +++ b/homes/modules/services/keepassxc/keepassxc.ini @@ -0,0 +1,12 @@ +[General] +ConfigVersion=2 + +[FdoSecrets] +Enabled=true +ShowNotification=true +ConfirmAccessItem=true +ConfirmDeleteItem=true + +[GUI] +MinimizeToTray=true +ShowTrayIcon=false diff --git a/homes/modules/services/keepassxc/keepassxc.nix b/homes/modules/services/keepassxc/keepassxc.nix new file mode 100644 index 0000000..7fd6e49 --- /dev/null +++ b/homes/modules/services/keepassxc/keepassxc.nix @@ -0,0 +1,23 @@ +{ config, inputs, lib, pkgs, ... }: +{ + home.packages = with pkgs; [ + keepassxc + ]; + + systemd.user.services.keepassxc = { + Unit = { + Description = "KeePassXC password manager"; + After = [ "graphical-session-pre.target" ]; + PartOf = [ "graphical-session.target" ]; + }; + Service = { + Description = "${pkgs.keepassxc}/bin/keepassxc"; + Restart = "on-failure"; + }; + Install.WantedBy = [ "graphical-session.target" ]; + }; + + xdg.configFile."keepassxc/keepassxc.ini" = { + source = ./keepassxc.ini; + }; +} diff --git a/homes/modules/services/pulse/client.conf.template b/homes/modules/services/pulse/client.conf.template new file mode 100644 index 0000000..6a65f11 --- /dev/null +++ b/homes/modules/services/pulse/client.conf.template @@ -0,0 +1 @@ +cookie-file = /run/user/{uid}/pulse/cookie diff --git a/homes/modules/services/pulse/pulse.nix b/homes/modules/services/pulse/pulse.nix new file mode 100644 index 0000000..59d1fa0 --- /dev/null +++ b/homes/modules/services/pulse/pulse.nix @@ -0,0 +1,9 @@ +{ inputs, lib, pkgs, config, osConfig, ... }: +{ + # writes ./client.conf to ~/.config/pulse/client.conf + xdg.configFile."pulse/client.conf".text = builtins.replaceStrings + ["{uid}"] + # make sure ur user id is set!!! + ["${toString osConfig.users.users.${config.home.username}.uid}"] + (builtins.readFile ./client.conf.template); +} diff --git a/homes/modules/services/wireplumber/config/wireplumber.conf.d/50-alsa-config.conf b/homes/modules/services/wireplumber/config/wireplumber.conf.d/50-alsa-config.conf new file mode 100644 index 0000000..e69de29 diff --git a/homes/modules/services/wireplumber/wireplumber.nix b/homes/modules/services/wireplumber/wireplumber.nix new file mode 100644 index 0000000..03e4957 --- /dev/null +++ b/homes/modules/services/wireplumber/wireplumber.nix @@ -0,0 +1,8 @@ +{ inputs, lib, pkgs, config, ... }: +{ + # writes ./config to ~/.config/wireplumber + xdg.configFile."wireplumber" = { + recursive = true; + source = ./config; + }; +} diff --git a/homes/modules/shell/fastfetch/fastfetch.nix b/homes/modules/shell/fastfetch/fastfetch.nix new file mode 100644 index 0000000..987f805 --- /dev/null +++ b/homes/modules/shell/fastfetch/fastfetch.nix @@ -0,0 +1,12 @@ +{ inputs, lib, pkgs, ... }: +{ + home.packages = with pkgs; [ + fastfetch # displays system info! x3 + ]; + + # writes ./themes to ~/.config/fastfetch/themes + xdg.configFile."fastfetch/themes" = { + recursive = true; + source = ./themes; + }; +} diff --git a/homes/modules/shell/fastfetch/themes/laimu.json b/homes/modules/shell/fastfetch/themes/laimu.json new file mode 100644 index 0000000..e69de29 diff --git a/homes/modules/shell/programs.nix b/homes/modules/shell/programs.nix new file mode 100644 index 0000000..b95007d --- /dev/null +++ b/homes/modules/shell/programs.nix @@ -0,0 +1,26 @@ +{ inputs, lib, pkgs, ... }: +{ + programs = { + zoxide = { + enable = true; + enableZshIntegration = true; + options = [ + "--cmd cd" + ]; + }; + + hyfetch = { + enable = true; + settings = { + preset = "genderfae"; + mode = "rgb"; + backend = "fastfetch"; + color_align = { + mode = "vertical"; + }; + auto_detect_light_dark = true; + pride_month_disable = false; + }; + }; + }; +} diff --git a/homes/modules/shell/zellij/zellij.nix b/homes/modules/shell/zellij/zellij.nix new file mode 100644 index 0000000..aa90116 --- /dev/null +++ b/homes/modules/shell/zellij/zellij.nix @@ -0,0 +1,17 @@ +{ inputs, lib, pkgs, ... }: +let + unstable = inputs.nixpkgs-unstable.legacyPackages.${pkgs.stdenv.hostPlatform.system}; +in +{ + # the theme file template for zellij is in wallust + + programs.zellij = { + enable = true; + enableZshIntegration = false; + + extraConfig = '' +theme "test" +show_startup_tips false + ''; + }; +} diff --git a/homes/modules/shell/zsh.nix b/homes/modules/shell/zsh.nix new file mode 100644 index 0000000..675395e --- /dev/null +++ b/homes/modules/shell/zsh.nix @@ -0,0 +1,86 @@ +{ inputs, lib, pkgs, ... }: +let + unstable = inputs.nixpkgs-unstable.legacyPackages.${pkgs.stdenv.hostPlatform.system}; +in +{ + programs.zsh = { + enable = true; + enableCompletion = true; + autosuggestion.enable = true; + syntaxHighlighting.enable = true; + + plugins = [ + { + name = "vi-mode"; + src = pkgs.zsh-vi-mode; + file = "share/zsh-vi-mode/zsh-vi-mode.plugin.zsh"; + } + ]; + + initContent = '' + # yazi wrapper!!! + function yazi() { + local tmp="$(mktemp -p "/run/user/$UID" -t "yazi-cwd.XXXXXX")" cwd + command yazi "$@" --cwd-file="$tmp" + IFS= read -r -d ''' cwd < "$tmp" + [ -n "$cwd" ] && [ "$cwd" != "$PWD" ] && builtin cd -- "$cwd" + rm -f -- "$tmp" + } + + hyfetch # oh i'm so gay!! :3 + ''; + + shellAliases = { + # files and nav stuff + ls = "eza"; + ll = "ls -la"; + lt = "ls --tree"; + llt = "ll --tree"; + + y = "yazi"; + + # cat with wings!!! + cat = "bat"; + + # init github keys + # description: gi = github initialize + sa = "eval \"$(ssh-agent -s)\""; + gh-auv = "ssh-add ~/.ssh/github_auroraveon"; + cb-fox = "ssh-add ~/.ssh/codeberg_foxxyora"; + + # -------------------- + # shorthand nix command aliases + + # open nix develop with preferred shell + # description: nd = nix develop + nd = "nix develop -c $SHELL"; + + # description: cdns = change directory [to] nix settings + cdns = "cd /etc/nixos"; + # cd to /etc/nixos and edit nix config + # description: ns = nix settings + ns = "cdns && sudo -E -s $EDITOR"; + # description: nrs = nix rebuild switch + nrs = "cdns && nh os switch /etc/nixos"; + # upgrades the system + upgrade = "cdns && sudo nix flake update && nh os switch /etc/nixos"; + + # kitty's ssh command (to fix xterm and other stuff qwq) + kssh = "kitty +kitten ssh"; + + # pipes are prettyyyy!!!! :3333 + pipes1 = "pipes.sh -r 1024 -p 8 -f 30"; + pipes2 = "pipes.sh -r 4096 -p 16 -f 100"; + }; + + history = { + size = 16384; + }; + }; + + programs.zsh.oh-my-zsh = { + enable = true; + theme = "agnoster"; + }; +} + diff --git a/homes/modules/themeing/hellwal/hellwal.nix b/homes/modules/themeing/hellwal/hellwal.nix new file mode 100644 index 0000000..4c0d191 --- /dev/null +++ b/homes/modules/themeing/hellwal/hellwal.nix @@ -0,0 +1,20 @@ +{ config, inputs, lib, pkgs, ... }: +let + unstable = inputs.nixpkgs-unstable.legacyPackages.${pkgs.stdenv.hostPlatform.system}; +in +{ + home.packages = with pkgs; [ + hellwal + ]; + + # writes ./wallust.toml to ~/.config/hellwal/wallust.toml + #xdg.configFile."wallust/wallust.toml" = { + #source = ./wallust.toml; + #}; + + # writes ./templates to ~/.config/hellwal/templates + #xdg.configFile."hellwal/templates" = { + #recursive = true; + #source = ./templates; + #}; +} diff --git a/homes/modules/themeing/wallust/templates/aurorashell-template.toml b/homes/modules/themeing/wallust/templates/aurorashell-template.toml new file mode 100644 index 0000000..ca1dded --- /dev/null +++ b/homes/modules/themeing/wallust/templates/aurorashell-template.toml @@ -0,0 +1,18 @@ +background = '{{ background | strip }}' +foreground = '{{ foreground | strip }}' +color00 = '{{ color0 | strip }}' +color01 = '{{ color1 | strip }}' +color02 = '{{ color2 | strip }}' +color03 = '{{ color3 | strip }}' +color04 = '{{ color4 | strip }}' +color05 = '{{ color5 | strip }}' +color06 = '{{ color6 | strip }}' +color07 = '{{ color7 | strip }}' +color08 = '{{ color8 | strip }}' +color09 = '{{ color9 | strip }}' +color10 = '{{ color10 | strip }}' +color11 = '{{ color11 | strip }}' +color12 = '{{ color12 | strip }}' +color13 = '{{ color13 | strip }}' +color14 = '{{ color14 | strip }}' +color15 = '{{ color15 | strip }}' diff --git a/homes/modules/themeing/wallust/templates/discord-template.css b/homes/modules/themeing/wallust/templates/discord-template.css new file mode 100644 index 0000000..b954be0 --- /dev/null +++ b/homes/modules/themeing/wallust/templates/discord-template.css @@ -0,0 +1,20 @@ +:root { + --foreground: {{ foreground }}; + --background: {{ background }}; + --color0: {{ color0 }}; + --color1: {{ color1 }}; + --color2: {{ color2 }}; + --color3: {{ color3 }}; + --color4: {{ color4 }}; + --color5: {{ color5 }}; + --color6: {{ color6 }}; + --color7: {{ color7 }}; + --color8: {{ color8 }}; + --color9: {{ color9 }}; + --color10: {{ color10 }}; + --color11: {{ color11 }}; + --color12: {{ color12 }}; + --color13: {{ color13 }}; + --color14: {{ color14 }}; + --color15: {{ color15 }}; +} diff --git a/homes/modules/themeing/wallust/templates/hyprland-template.conf b/homes/modules/themeing/wallust/templates/hyprland-template.conf new file mode 100644 index 0000000..c7ecd13 --- /dev/null +++ b/homes/modules/themeing/wallust/templates/hyprland-template.conf @@ -0,0 +1,18 @@ +$colorbg = {{ background | rgb }} +$colorfg = {{ foreground | rgb }} +$color00 = {{ color0 | rgb }} +$color01 = {{ color1 | rgb }} +$color02 = {{ color2 | rgb }} +$color03 = {{ color3 | rgb }} +$color04 = {{ color4 | rgb }} +$color05 = {{ color5 | rgb }} +$color06 = {{ color6 | rgb }} +$color07 = {{ color7 | rgb }} +$color08 = {{ color8 | rgb }} +$color09 = {{ color9 | rgb }} +$color10 = {{ color10 | rgb }} +$color11 = {{ color11 | rgb }} +$color12 = {{ color12 | rgb }} +$color13 = {{ color13 | rgb }} +$color14 = {{ color14 | rgb }} +$color15 = {{ color15 | rgb }} diff --git a/homes/modules/themeing/wallust/templates/imhex-template.theme b/homes/modules/themeing/wallust/templates/imhex-template.theme new file mode 100644 index 0000000..1100a87 --- /dev/null +++ b/homes/modules/themeing/wallust/templates/imhex-template.theme @@ -0,0 +1,405 @@ +{ + "base": "Dark", + "colors": { + "imgui": { + "border": "{{ foreground }}60", + "border-shadow": "#00000000", + "button": "{{ color14 }}60", + "button-active": "{{ color14 }}FF", + "button-hovered": "{{ color14 }}FF", + "check-mark": "{{ color11 }}FF", + "child-background": "{{ background }}FF", + "docking-empty-background": "{{ background | darken(0.2) }}FF", + "docking-preview": "#4296F9B2", + "drag-drop-target": "#FFFF00E5", + "frame-background": "#284D7A89", + "frame-background-active": "#4296F9AA", + "frame-background-hovered": "#4296F966", + "header": "{{ color3 }}C0", + "header-active": "{{ color3 }}FF", + "header-hovered": "{{ color3 }}E0", + "input-text-cursor": "{{ foreground }}FF", + "menu-bar-background": "{{ background }}FF", + "modal-window-dim-background": "#CCCCCC30", + "nav-highlight": "#4296F9FF", + "nav-windowing-background": "#CCCCCC33", + "nav-windowing-highlight": "#FFFFFFB2", + "plot-histogram": "#E5B200FF", + "plot-histogram-hovered": "#FF9900FF", + "plot-lines": "#9B9B9BFF", + "plot-lines-hovered": "#FF6D59FF", + "popup-background": "{{ background }}FF", + "resize-grip": "#4296F933", + "resize-grip-active": "#4296F9F2", + "resize-grip-hovered": "#4296F9AA", + "scrollbar-background": "#05050587", + "scrollbar-grab": "#4F4F4FFF", + "scrollbar-grab-active": "#828282FF", + "scrollbar-grab-hovered": "#686868FF", + "separator": "#6D6D7F7F", + "separator-active": "#1965BFFF", + "separator-hovered": "#1965BFC6", + "slider-grab": "#3D87E0FF", + "slider-grab-active": "#4296F9FF", + "tab": "{{ color2 }}80", + "tab-active": "{{ color2 }}E0", + "tab-active-overline": "#00000000", + "tab-hovered": "{{ color2 }}C0", + "tab-unfocused": "{{ color2 }}80", + "tab-unfocused-active": "{{ color2 }}B0", + "tab-unfocused-active-overline": "#00000000", + "table-border-light": "{{ foreground }}50", + "table-border-strong": "{{ foreground }}90", + "table-header-background": "{{ background | darken(0.2) }}FF", + "table-row-background": "#00000000", + "table-row-background-alt": "{{ foreground }}0F", + "text": "{{ foreground }}FF", + "text-disabled": "{{ foreground }}FF", + "text-link": "{{ color13 }}FF", + "text-selected-background": "{{ color13 }}60", + "title-background": "{{ background | darken(0.3) }}FF", + "title-background-active": "{{ background | darken(0.3) }}FF", + "title-background-collapse": "{{ background | darken(0.3) }}FF", + "tree-lines": "#6D6D7F7F", + "window-background": "{{ background }}FF", + "window-shadow": "#00000000" + }, + "imhex": { + "IEEE-tool-exp": "#5D7F5DFF", + "IEEE-tool-mantissa": "#7F5D5DFF", + "IEEE-tool-sign": "#5D5D7FFF", + "achievement-unlocked": "#F1C40FFF", + "advanced-encoding-ascii": "#7BB4E9FF", + "advanced-encoding-multi": "#F3DF91FF", + "advanced-encoding-single": "#E7978FFF", + "advanced-encoding-unknown": "#E7978FFF", + "blur-background": "#00000000", + "desc-button": "{{ background }}FF", + "desc-button-active": "{{ color10 }}C0", + "desc-button-hovered": "{{ color10 }}80", + "diff-added": "#388B42FF", + "diff-changed": "#F1C40FFF", + "diff-removed": "#E74C3CFF", + "find-highlight": "#672A78FF", + "highlight": "#4DC69BFF", + "logger-debug": "#388B42FF", + "logger-error": "#E74C3CFF", + "logger-fatal": "#672A78FF", + "logger-info": "#06539BFF", + "logger-warning": "#F1C40FFF", + "patches": "#E74C3CFF", + "pattern-selected": "#3683CBFF", + "toolbar-blue": "{{ color12 }}FF", + "toolbar-brown": "{{ color13 }}FF", + "toolbar-gray": "{{ color14 }}FF", + "toolbar-green": "{{ color4 }}FF", + "toolbar-purple": "{{ color5 }}FF", + "toolbar-red": "{{ color6 }}FF", + "toolbar-yellow": "{{ color11 }}FF" + }, + "imnodes": { + "box-selector": "#3D87E01E", + "box-selector-outline": "#3D87E096", + "grid-background": "{{ foreground }}7F", + "grid-line": "{{ foreground }}7F", + "grid-line-primary": "{{ foreground }}7F", + "link": "#3D87E0C8", + "link-hovered": "#4296FAFF", + "link-selected": "#4296FAFF", + "mini-map-background": "#19191996", + "mini-map-background-hovered": "#191919C8", + "mini-map-canvas": "#C8C8C819", + "mini-map-canvas-outline": "#C8C8C8C8", + "mini-map-link": "#3D87E0C8", + "mini-map-link-selected": "#4296FAFF", + "mini-map-node-background": "#C8C8C864", + "mini-map-node-background-hovered": "#C8C8C8FF", + "mini-map-node-background-selected": "#C8C8C8FF", + "mini-map-node-outline": "#C8C8C864", + "mini-map-outline": "#96969664", + "mini-map-outline-hovered": "#969696C8", + "node-background": "#323232FF", + "node-background-hovered": "#4B4B4BFF", + "node-background-selected": "#4B4B4BFF", + "node-outline": "#646464FF", + "pin": "#F5CB25FF", + "pin-hovered": "#FA8335FF", + "title-bar": "#294E7AFF", + "title-bar-hovered": "#4296FAFF", + "title-bar-selected": "#4296FAFF" + }, + "implot": { + "axis-bg": "#00000000", + "axis-bg-active": "#00000000", + "axis-bg-hovered": "#00000000", + "axis-grid": "#FFFFFF3F", + "axis-text": "#FFFFFFFF", + "axis-tick": "#00000000", + "crosshairs": "#FFFFFF7F", + "error-bar": "#00000000", + "fill": "#00000000", + "frame-bg": "#FFFFFF11", + "inlay-text": "#FFFFFFFF", + "legend-bg": "#141414EF", + "legend-border": "#6D6D7F7F", + "legend-text": "#FFFFFFFF", + "line": "#00000000", + "marker-fill": "#00000000", + "marker-outline": "#00000000", + "plot-bg": "#0000007F", + "plot-border": "#6D6D7F7F", + "selection": "#FF9900FF", + "title-text": "#FFFFFFFF" + }, + "text-editor": { + "attribute": "#AAAAAAFF", + "background": "{{ background }}{{ 100 | alpha_hexa }}", + "breakpoint": "#FF200040", + "calculated-pointer": "#AAAAAAFF", + "char-literal": "#E0A070FF", + "comment": "#206020FF", + "current-line-edge": "#A0A0A040", + "current-line-fill": "#00000040", + "current-line-fill-inactive": "#80808040", + "cursor": "#E0E0E0FF", + "debug-text": "#8A8A8AFF", + "default": "#7F7F7FFF", + "default-text": "#7F7F7FFF", + "doc-block-comment": "#206020FF", + "doc-comment": "#206020FF", + "doc-global-comment": "#206020FF", + "error-marker": "#FF200080", + "error-text": "#FF200080", + "function": "#AAAAAAFF", + "function-parameter": "#AAAAAAFF", + "function-variable": "#AAAAAAFF", + "global-variable": "#AAAAAAFF", + "identifier": "#AAAAAAFF", + "keyword": "{{ color13 }}{{ 100 | alpha_hexa }}", + "known-identifier": "#4DC69BFF", + "line-number": "{{ color13 }}{{ 100 | alpha_hexa }}", + "local-variable": "#AAAAAAFF", + "multi-line-comment": "#206040FF", + "namespace": "#AAAAAAFF", + "number": "#00FF00FF", + "pattern-variable": "#AAAAAAFF", + "placed-variable": "#AAAAAAFF", + "preproc-identifier": "#808060FF", + "preprocessor": "#808060FF", + "preprocessor-deactivated": "#4F4F4F45", + "punctuation": "#7F7F7FFF", + "selection": "#205AA080", + "separator": "#7F7F7FFF", + "string": "#E07070FF", + "template-variable": "#AAAAAAFF", + "typedef": "#AAAAAAFF", + "unknown-identifier": "#FC2C2CFE", + "user-defined-type": "#AAAAAAFF", + "view": "#AAAAAAFF", + "warning-text": "#FFFF00FF" + } + }, + "image_theme": "dark", + "name": "base16", + "styles": { + "imgui": { + "alpha": 1.0, + "button-text-align": [ + 0.5, + 0.5 + ], + "cell-padding": [ + 4.0, + 2.0 + ], + "child-border-size": 1.0, + "child-rounding": 0.0, + "circle-tessellation-max-error": 0.30000001192092896, + "columns-min-spacing": 6.0, + "curve-tessellation-tol": 1.25, + "disabled-alpha": 0.6000000238418579, + "display-safe-area-padding": [ + 3.0, + 3.0 + ], + "display-window-padding": [ + 19.0, + 19.0 + ], + "docking-separator-size": 2.0, + "frame-border-size": 0.0, + "frame-padding": [ + 4.0, + 3.0 + ], + "frame-rounding": 0.0, + "grab-min-size": 12.0, + "grab-rounding": 0.0, + "image-border-size": 0.0, + "indent-spacing": 21.0, + "item-inner-spacing": [ + 4.0, + 4.0 + ], + "item-spacing": [ + 8.0, + 4.0 + ], + "log-slider-deadzone": 4.0, + "mouse-cursor-scale": 1.0, + "popup-border-size": 1.0, + "popup-rounding": 0.0, + "scrollbar-rounding": 9.0, + "scrollbar-size": 14.0, + "selectable-text-align": [ + 0.0, + 0.0 + ], + "separator-text-align": [ + 0.0, + 0.5 + ], + "separator-text-border-size": 3.0, + "separator-text-padding": [ + 20.0, + 3.0 + ], + "tab-bar-border-size": 1.0, + "tab-bar-overline-size": 1.0, + "tab-border-size": 0.0, + "tab-close-button-min-width-selected": -1.0, + "tab-close-button-min-width-unselected": 0.0, + "tab-min-width-base": 1.0, + "tab-min-width-shrink": 80.0, + "tab-rounding": 5.0, + "touch-extra-padding": [ + 0.0, + 0.0 + ], + "window-border-hover-padding": 4.0, + "window-border-size": 1.0, + "window-min-size": [ + 32.0, + 32.0 + ], + "window-padding": [ + 8.0, + 8.0 + ], + "window-rounding": 0.0, + "window-shadow-angle": 0.785398006439209, + "window-shadow-offset": 0.0, + "window-shadow-size": 100.0, + "window-title-align": [ + 0.0, + 0.5 + ] + }, + "imhex": { + "popup-alpha": 0.6499999761581421, + "window-blur": 0.0 + }, + "imnodes": { + "grid-spacing": 24.0, + "link-hover-distance": 10.0, + "link-line-segments-per-length": 0.10000000149011612, + "link-thickness": 3.0, + "mini-map-offset": [ + 4.0, + 4.0 + ], + "mini-map-padding": [ + 8.0, + 8.0 + ], + "node-border-thickness": 1.0, + "node-corner-rounding": 4.0, + "node-padding": [ + 8.0, + 8.0 + ], + "pin-circle-radius": 4.0, + "pin-hover-radius": 10.0, + "pin-line-thickness": 1.0, + "pin-offset": 0.0, + "pin-quad-side-length": 7.0, + "pin-triangle-side-length": 9.5 + }, + "implot": { + "annotation-padding": [ + 2.0, + 2.0 + ], + "digital-bit-gap": 4.0, + "digital-bit-height": 8.0, + "error-bar-size": 5.0, + "error-bar-weight": 1.5, + "fill-alpha": 1.0, + "fit-padding": [ + 0.0, + 0.0 + ], + "label-padding": [ + 5.0, + 5.0 + ], + "legend-inner-padding": [ + 5.0, + 5.0 + ], + "legend-padding": [ + 10.0, + 10.0 + ], + "legend-spacing": [ + 5.0, + 0.0 + ], + "line-weight": 1.0, + "major-grid-size": [ + 1.0, + 1.0 + ], + "major-tick-len": [ + 10.0, + 10.0 + ], + "major-tick-size": [ + 1.0, + 1.0 + ], + "marker-size": 4.0, + "marker-weight": 1.0, + "minor-alpha": 0.25, + "minor-grid-size": [ + 1.0, + 1.0 + ], + "minor-tick-len": [ + 5.0, + 5.0 + ], + "minor-tick-size": [ + 1.0, + 1.0 + ], + "mouse-pos-padding": [ + 10.0, + 10.0 + ], + "plot-border-size": 1.0, + "plot-default-size": [ + 400.0, + 300.0 + ], + "plot-min-size": [ + 200.0, + 150.0 + ], + "plot-padding": [ + 10.0, + 10.0 + ] + } + } +} diff --git a/homes/modules/themeing/wallust/templates/kitty-template.conf b/homes/modules/themeing/wallust/templates/kitty-template.conf new file mode 100644 index 0000000..c0ba6b9 --- /dev/null +++ b/homes/modules/themeing/wallust/templates/kitty-template.conf @@ -0,0 +1,45 @@ +# background & foreground +foreground {{ foreground }} +background {{ background }} +selection_foreground {{ background }} +selection_background {{ foreground }} + +# cursor +cursor {{ cursor }} +cursor_text_color {{ cursor }} + +# other cursor colors to use +# cursor: foreground +# cursor_text_color: color8 + +# black +color0 {{ color0 }} +color8 {{ color8 }} + +# red +color1 {{ color1 }} +color9 {{ color9 }} + +# green +color2 {{ color2 }} +color10 {{ color10 }} + +# yellow +color3 {{ color3 }} +color11 {{ color11 }} + +# blue +color4 {{ color4 }} +color12 {{ color12 }} + +# magenta +color5 {{ color5 }} +color13 {{ color13 }} + +# cyan +color6 {{ color6 }} +color14 {{ color14 }} + +# white +color7 {{ color7 }} +color15 {{ color15 }} diff --git a/homes/modules/themeing/wallust/templates/neovim-template b/homes/modules/themeing/wallust/templates/neovim-template new file mode 100644 index 0000000..433a3eb --- /dev/null +++ b/homes/modules/themeing/wallust/templates/neovim-template @@ -0,0 +1,18 @@ +{{ color0 }} +{{ color1 }} +{{ color2 }} +{{ color3 }} +{{ color4 }} +{{ color5 }} +{{ color6 }} +{{ color7 }} +{{ color8 }} +{{ color9 }} +{{ color10 }} +{{ color11 }} +{{ color12 }} +{{ color13 }} +{{ color14 }} +{{ color15 }} +{{ background }} +{{ foreground }} diff --git a/homes/modules/themeing/wallust/templates/spicetify-template.ini b/homes/modules/themeing/wallust/templates/spicetify-template.ini new file mode 100644 index 0000000..e69de29 diff --git a/homes/modules/themeing/wallust/templates/waybar-template.css b/homes/modules/themeing/wallust/templates/waybar-template.css new file mode 100644 index 0000000..e9bba66 --- /dev/null +++ b/homes/modules/themeing/wallust/templates/waybar-template.css @@ -0,0 +1,18 @@ +@define-color colorbg {{ background }}; +@define-color colorfg {{ foreground }}; +@define-color color00 {{ color0 }}; +@define-color color01 {{ color1 }}; +@define-color color02 {{ color2 }}; +@define-color color03 {{ color3 }}; +@define-color color04 {{ color4 }}; +@define-color color05 {{ color5 }}; +@define-color color06 {{ color6 }}; +@define-color color07 {{ color7 }}; +@define-color color08 {{ color8 }}; +@define-color color09 {{ color9 }}; +@define-color color10 {{ color10 }}; +@define-color color11 {{ color11 }}; +@define-color color12 {{ color12 }}; +@define-color color13 {{ color13 }}; +@define-color color14 {{ color14 }}; +@define-color color15 {{ color15 }}; diff --git a/homes/modules/themeing/wallust/templates/zellij-template.kdl b/homes/modules/themeing/wallust/templates/zellij-template.kdl new file mode 100644 index 0000000..89fef47 --- /dev/null +++ b/homes/modules/themeing/wallust/templates/zellij-template.kdl @@ -0,0 +1,45 @@ +themes { + base16 { + ribbon_unselected { + base {{ background | red }} {{ background | green }} {{ background | blue }} + background {{ color0 | red }} {{ color0 | green }} {{ color0 | blue }} + emphasis_0 {{ foreground | red }} {{ foreground | green }} {{ foreground | blue }} + emphasis_1 {{ foreground | red }} {{ foreground | green }} {{ foreground | blue }} + emphasis_2 {{ foreground | red }} {{ foreground | green }} {{ foreground | blue }} + emphasis_3 {{ foreground | red }} {{ foreground | green }} {{ foreground | blue }} + } + ribbon_selected { + base {{ background | red }} {{ background | green }} {{ background | blue }} + background {{ color12 | red }} {{ color12 | green }} {{ color12 | blue }} + emphasis_0 {{ foreground | red }} {{ foreground | green }} {{ foreground | blue }} + emphasis_1 {{ foreground | red }} {{ foreground | green }} {{ foreground | blue }} + emphasis_2 {{ foreground | red }} {{ foreground | green }} {{ foreground | blue }} + emphasis_3 {{ foreground | red }} {{ foreground | green }} {{ foreground | blue }} + } + + frame_unselected { + base {{ color1 | red }} {{ color1 | green }} {{ color1 | blue }} + background {{ background | red }} {{ background | green }} {{ background | blue }} + emphasis_0 {{ foreground | red }} {{ foreground | green }} {{ foreground | blue }} + emphasis_1 {{ foreground | red }} {{ foreground | green }} {{ foreground | blue }} + emphasis_2 {{ foreground | red }} {{ foreground | green }} {{ foreground | blue }} + emphasis_3 {{ foreground | red }} {{ foreground | green }} {{ foreground | blue }} + } + frame_selected { + base {{ color14 | red }} {{ color14 | green }} {{ color14 | blue }} + background {{ background | red }} {{ background | green }} {{ background | blue }} + emphasis_0 {{ foreground | red }} {{ foreground | green }} {{ foreground | blue }} + emphasis_1 {{ foreground | red }} {{ foreground | green }} {{ foreground | blue }} + emphasis_2 {{ foreground | red }} {{ foreground | green }} {{ foreground | blue }} + emphasis_3 {{ foreground | red }} {{ foreground | green }} {{ foreground | blue }} + } + frame_highlight { + base {{ color13 | red }} {{ color13 | green }} {{ color13 | blue }} + background {{ background | red }} {{ background | green }} {{ background | blue }} + emphasis_0 {{ foreground | red }} {{ foreground | green }} {{ foreground | blue }} + emphasis_1 {{ foreground | red }} {{ foreground | green }} {{ foreground | blue }} + emphasis_2 {{ foreground | red }} {{ foreground | green }} {{ foreground | blue }} + emphasis_3 {{ foreground | red }} {{ foreground | green }} {{ foreground | blue }} + } + } +} diff --git a/homes/modules/themeing/wallust/wallust.nix b/homes/modules/themeing/wallust/wallust.nix new file mode 100644 index 0000000..207c4ef --- /dev/null +++ b/homes/modules/themeing/wallust/wallust.nix @@ -0,0 +1,20 @@ +{ config, inputs, lib, pkgs, ... }: +let + unstable = inputs.nixpkgs-unstable.legacyPackages.${pkgs.stdenv.hostPlatform.system}; +in +{ + home.packages = with pkgs; [ + wallust + ]; + + # writes ./wallust.toml to ~/.config/wallust/wallust.toml + xdg.configFile."wallust/wallust.toml" = { + source = ./wallust.toml; + }; + + # writes ./templates to ~/.config/wallust/templates + xdg.configFile."wallust/templates" = { + recursive = true; + source = ./templates; + }; +} diff --git a/homes/modules/themeing/wallust/wallust.toml b/homes/modules/themeing/wallust/wallust.toml new file mode 100644 index 0000000..efff412 --- /dev/null +++ b/homes/modules/themeing/wallust/wallust.toml @@ -0,0 +1,35 @@ +check_contrast = true + +[templates] +vesktop.template = "discord-template.css" +vesktop.target = "~/.config/vesktop/themes/base16-colors.css" + +vencord.template = "discord-template.css" +vencord.target = "~/.config/Vencord/themes/base16-colors.css" + +equibop.template = "discord-template.css" +equibop.target = "~/.config/equibop/themes/base16-colors.css" + +equicord.template = "discord-template.css" +equicord.target = "~/.config/Equicord/themes/base16-colors.css" + +kitty.template = "kitty-template.conf" +kitty.target = "~/.config/kitty/theme.conf" + +hyprland.template = "hyprland-template.conf" +hyprland.target = "~/.config/hypr/colors.conf" + +waybar.template = "waybar-template.css" +waybar.target = "~/.config/waybar/colors.css" + +neovim.template = "neovim-template" +neovim.target = "~/.cache/nvim/neovim-colors" + +aurorashell.template = "aurorashell-template.toml" +aurorashell.target = "~/.config/aurorashell/colors.toml" + +zellij.template = "zellij-template.kdl" +zellij.target = "~/.config/zellij/themes/base16.kdl" + +imhex.template = "imhex-template.theme" +imhex.target = "~/.local/share/imhex/themes/base16.theme" diff --git a/homes/modules/wm/hyprland/hypr/keybinds/virtual.conf b/homes/modules/wm/hyprland/hypr/keybinds/virtual.conf new file mode 100644 index 0000000..076c602 --- /dev/null +++ b/homes/modules/wm/hyprland/hypr/keybinds/virtual.conf @@ -0,0 +1,43 @@ +# a submap for emulating keys/buttons/functions on the keyboard or mouse + +bind = $mod+shift+alt, a, submap, virtual +submap = virtual + +# exit submap +bind = , escape, submap, reset + +# emulates mouse buttons +bind = , z, exec, wlrctl pointer click left +bind = , x, exec, wlrctl pointer click right +bind = , s, exec, wlrctl pointer click middle +bind = , i, exec, wlrctl pointer click forward +bind = , o, exec, wlrctl pointer click back + +# emulates the arrow keys using hjkl +#binde = , h, exec, wtype -k Left +#binde = , j, exec, wtype -k Down +#binde = , k, exec, wtype -k Up +#binde = , l, exec, wtype -k Right + +# moves the mouse pointer +binde = , h, exec, wlrctl pointer move -30 0 +binde = , j, exec, wlrctl pointer move 0 30 +binde = , k, exec, wlrctl pointer move 0 -30 +binde = , l, exec, wlrctl pointer move 30 0 + +# moves the mouse pointer in little steps +binde = alt, h, exec, wlrctl pointer move -15 0 +binde = alt, j, exec, wlrctl pointer move 0 15 +binde = alt, k, exec, wlrctl pointer move 0 -15 +binde = alt, l, exec, wlrctl pointer move 15 0 + +# emulates scrolling with mouse +binde = , e, exec, wlrctl pointer scroll 0 -15 # scroll up +binde = , y, exec, wlrctl pointer scroll 0 15 # scroll down +binde = alt, e, exec, wlrctl pointer scroll -15 0 # scroll left +binde = alt, y, exec, wlrctl pointer scroll 0 15 # scroll right + +# catches all other keys and keeps us in the submap +bind = , catchall, submap, virtual + +submap = reset diff --git a/homes/modules/wm/hyprland/hypr/theme.conf b/homes/modules/wm/hyprland/hypr/theme.conf new file mode 100644 index 0000000..22cbd57 --- /dev/null +++ b/homes/modules/wm/hyprland/hypr/theme.conf @@ -0,0 +1,19 @@ +general { + # border colors that works in most situations + col.inactive_border = rgb($colorbg) rgb($color09) 45deg + col.active_border = rgb($colorfg) rgb($color11) 45deg + + # transparent inactive border colors + # col.inactive_border = rgba($color01,0.0) rgba($color03,0.0) 45deg + + # experimental border colors that may not look good all the time + # col.inactive_border = rgba($color01,0.6) rgba($color03,0.6) 45deg + # col.active_border = rgb($color09) rgb($color11) 45deg +} + +decoration { + shadow { + enabled = false + range = 2 + } +} diff --git a/homes/modules/wm/hyprland/hypr/windowrules.conf b/homes/modules/wm/hyprland/hypr/windowrules.conf new file mode 100644 index 0000000..1d2c078 --- /dev/null +++ b/homes/modules/wm/hyprland/hypr/windowrules.conf @@ -0,0 +1,61 @@ +# window rules + +# ---------------------------------------------------------------------------- # +# task manager +windowrule { + name = task-manager + match:class = ^(kitty)$ + match:title = ^(btop)$ + float = true + center = true + size = (monitor_w*0.65) (monitor_h*0.65) +} + +# ---------------------------------------------------------------------------- # +# terminal filechooser +windowrule { + name = terminal-filechooser + match:class = ^(kitty)$ + match:title = ^(filechooser)$ + float = true + center = true + size = (monitor_w*0.85) (monitor_h*0.85) +} + +# ---------------------------------------------------------------------------- # +# yazi explorer +#windowrule { + #name = yazi + #match:class = ^(kitty)$ + #match:title = ^(yazi)$ + #float = true + #center = true + #size = (monitor_w*0.85) (monitor_h*0.85) +#} + +# ---------------------------------------------------------------------------- # +# kitty - blur +windowrule { + name = kitty-blur + match:class = ^(kitty)$ + match:fullscreen = false + opacity = 0.95 +} + +# ---------------------------------------------------------------------------- # +# imhex - blur +windowrule { + name = imhex-blur + match:class = ^(imhex)$ + match:fullscreen = false + opacity = 0.97 +} + +# ---------------------------------------------------------------------------- # +# discord - blur +windowrule { + name = discord-blur + match:initial_title = ^(Discord|Discord Popout)$ + match:fullscreen = false + opacity = 0.97 +} diff --git a/homes/modules/wm/hyprland/hyprland.nix b/homes/modules/wm/hyprland/hyprland.nix new file mode 100644 index 0000000..0d9764c --- /dev/null +++ b/homes/modules/wm/hyprland/hyprland.nix @@ -0,0 +1,314 @@ +{ config, inputs, pkgs, ... }: +let + unstable = inputs.nixpkgs-unstable.legacyPackages.${pkgs.stdenv.hostPlatform.system}; + hyprland-git = inputs.hyprland-git.packages.${pkgs.stdenv.hostPlatform.system}; +in +{ + wayland.windowManager.hyprland = { + enable = true; + package = null; + portalPackage = null; + + plugins = [ + #inputs.hyprland-plugins.packages.${pkgs.stdenv.hostPlatform.system}.hyprscrolling + ]; + + xwayland.enable = true; + + extraConfig = '' + source = ./colors.conf + source = ./theme.conf + source = ./windowrules.conf + + source = ./keybinds/virtual.conf + ''; + + settings = { + # shorthand command keywords + "$mod" = "SUPER"; + + # applications + "$terminal" = "kitty"; + "$explorer" = "kitty -e yazi"; + "$browser" = "zen"; + + # menu + "$menu" = "rofi"; + + # startup programs + exec-once = [ + "waybar" + "awww-daemon" + + "wl-paste --type text --watch cliphist store" + "wl-paste --type image --watch cliphist store" + "wl-clip-persist --clipboard regular" + + "playerctld daemon" + + # swaps around the 3rd and 4th workspace because they always start + # in the wrong order + "hyprctl dispatch workspace 4 && hyprctl dispatch workspace 5 && hyprctl dispatch workspace 3 && hyprctl dispatch workspace 4 && hyprctl dispatch workspace 5 && hyprctl dispatch workspace 3 && hyprctl dispatch workspace 1" + ]; + + # monitor configuration + monitor = [ + # note: display stream compression pending for open source + # amd gpu driver and my monitor (VG279QM) only supports DP 1.2 + # so no >240hz atm + "DP-2, 1920x1080@239.76, 0x0, 1" # main monitor + "DP-3, 1920x1080@143.61, 1920x0, 1" # second monitor + "HDMI-A-2, 2560x1440@59.95, 3840x0, 1" # third monitor (drawing tablet) + "HDMI-A-1, 1920x1080@60.00, -1920x0, 1" # tv + ]; + + general = { + gaps_in = 5; + gaps_out = "0, 10, 10, 10"; + border_size = 2; + layout = "dwindle"; + }; + + plugin = { + # options at https://github.com/hyprwm/hyprland-plugins/tree/main/hyprscrolling + hyprscrolling = { + fullscreen_on_one_column = false; + column_width = 1.0; + }; + }; + + dwindle = { + preserve_split = true; + }; + + decoration = { + rounding = 8; + + active_opacity = 1.00; + inactive_opacity = 1.00; + + blur = { + xray = true; + size = 6; + passes = 2; + #vibrancy = 0.3; + special = true; + }; + }; + + bezier = [ + "workspace_curve, 0.56,0.19,0.24,0.58" + "workspace_in_curve, 0.56,0.19,0.56,0.99" + ]; + + animation = [ + #"workspaces, 1, 1.94, workspace_in_curve, slide" + #"workspacesIn, 1, 1.21, workspace_in_curve, slide" + #"workspacesOut, 1, 1.94, workspace_in_curve, slide" + ]; + + input = { + repeat_rate = 50; + repeat_delay = 300; + + sensitivity = 0; # 0 = no modification + accel_profile = "flat"; + force_no_accel = false; # not recommended to turn on + }; + + cursor.no_hardware_cursors = true; + + misc = { + enable_anr_dialog = false; + font_family = "DepartureMono Nerd Font"; + }; + + # bindings + bind = [ + # binds for applications + "$mod, t, exec, $terminal" + "$mod, r, exec, $browser" + "$mod, e, exec, $explorer" + + # binds for rofi + "$mod, d, exec, pkill -x rofi || rofi -show drun -show-icons" + "alt, tab, exec, pkill -x rofi || rofi -modi window -show window -show-icons" + "$mod, v, exec, pkill -x rofi || cliphist list | rofi -dmenu | cliphist decode | wl-copy" + + # screenshots + # todo: add active monitor + "$mod, s, exec, grim -g \"\$(slurp -d)\" - | wl-copy" # region + "$mod+alt, s, exec, grim -g \"\$(slurp -o)\" - | wl-copy" # monitor + "$mod+ctrl, s, exec, grim - | wl-copy" # all monitors + + # hyprpicker + "$mod, n, exec, hyprpicker -v" + # hyprlock + "$mod+alt, y, exec, hyprlock" + # task manager + "$mod+ctrl, escape, exec, task-manager.sh" + "$mod+ctrl, grave, exec, task-manager.sh" + + # media binds (more in binde below) + ", XF86AudioMute, exec, wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle" + ", XF86AudioPlay, exec, playerctl play-pause" + ", XF86AudioNext, exec, playerctl next" + ", XF86AudioPrev, exec, playerctl previous" + "Shift_R, XF86AudioPlay, exec, playerctl shuffle toggle" + "Shift_R, XF86AudioNext, exec, playerctl loop track" + + # manage windows / session + "$mod+alt, c, killactive" + "$mod, f, fullscreen" + "$mod, x, togglefloating" + "$mod, i, togglesplit" + "$mod+Alt, Delete, exit" # exit hyprland + + # move focus + "$mod, h, movefocus, l" + "$mod, j, movefocus, d" + "$mod, k, movefocus, u" + "$mod, l, movefocus, r" + + # move window + "$mod+alt, h, movewindow, l" + "$mod+alt, j, movewindow, d" + "$mod+alt, k, movewindow, u" + "$mod+alt, l, movewindow, r" + + # swap window + "$mod+ctrl, h, swapwindow, l" + "$mod+ctrl, j, swapwindow, d" + "$mod+ctrl, k, swapwindow, u" + "$mod+ctrl, l, swapwindow, r" + + # move column (hyprscrolling) + "$mod, period, layoutmsg, move +col" + "$mod, comma, layoutmsg, move -col" + + # focus monitor + #"$mod+Ctrl+Tab, 1, focusmonitor, DP-2" + #"$mod+Ctrl+Tab, 2, focusmonitor, DP-3" + #"$mod+Ctrl+Tab, 3, focusmonitor, HDMI-A-2" + #"$mod+Ctrl+Tab, 4, focusmonitor, HDMI-A-1" + + # move workspace to monitor + #"$mod+Tab, 1, movecurrentworkspacetomonitor, DP-2" + #"$mod+Tab, 2, movecurrentworkspacetomonitor, DP-3" + #"$mod+Tab, 3, movecurrentworkspacetomonitor, HDMI-A-2" + #"$mod+Tab, 4, movecurrentworkspacetomonitor, HDMI-A-1" + + # special workspace + "$mod, escape, togglespecialworkspace" + "$mod+shift, escape, movetoworkspace, special" + "$mod+alt, escape, movetoworkspacesilent, special" + "$mod, grave, togglespecialworkspace" + "$mod+shift, grave, movetoworkspace, special" + "$mod+alt, grave, movetoworkspacesilent, special" + + # switch workspaces + "$mod, 1, workspace, 1" + "$mod, 2, workspace, 2" + "$mod, 3, workspace, 3" + "$mod, 4, workspace, 4" + "$mod, 5, workspace, 5" + "$mod, 6, workspace, 6" + "$mod, 7, workspace, 7" + "$mod, 8, workspace, 8" + "$mod, 9, workspace, 9" + "$mod, 0, workspace, 10" + "$mod, minus, workspace, 11" + "$mod, equal, workspace, 12" + + # move focused window to workspace + "$mod+shift, 1, movetoworkspace, 1" + "$mod+shift, 2, movetoworkspace, 2" + "$mod+shift, 3, movetoworkspace, 3" + "$mod+shift, 4, movetoworkspace, 4" + "$mod+shift, 5, movetoworkspace, 5" + "$mod+shift, 6, movetoworkspace, 6" + "$mod+shift, 7, movetoworkspace, 7" + "$mod+shift, 8, movetoworkspace, 8" + "$mod+shift, 9, movetoworkspace, 9" + "$mod+shift, 0, movetoworkspace, 10" + "$mod+shift, minus, movetoworkspace, 11" + "$mod+shift, equal, movetoworkspace, 12" + + # move focused window to workspace silently + "$mod+alt, 1, movetoworkspacesilent, 1" + "$mod+alt, 2, movetoworkspacesilent, 2" + "$mod+alt, 3, movetoworkspacesilent, 3" + "$mod+alt, 4, movetoworkspacesilent, 4" + "$mod+alt, 5, movetoworkspacesilent, 5" + "$mod+alt, 6, movetoworkspacesilent, 6" + "$mod+alt, 7, movetoworkspacesilent, 7" + "$mod+alt, 8, movetoworkspacesilent, 8" + "$mod+alt, 9, movetoworkspacesilent, 9" + "$mod+alt, 0, movetoworkspacesilent, 10" + "$mod+alt, minus, movetoworkspacesilent, 11" + "$mod+alt, equal, movetoworkspacesilent, 12" + + # move current workspace to monitor + "$mod+shift+alt, 1, movecurrentworkspacetomonitor, DP-2" + "$mod+shift+alt, 2, movecurrentworkspacetomonitor, DP-3" + "$mod+shift+alt, 3, movecurrentworkspacetomonitor, HDMI-A-2" + "$mod+shift+alt, 4, movecurrentworkspacetomonitor, HDMI-A-1" + ]; + + # bindings for mouse + bindm = [ + "$mod, mouse:272, movewindow" # left click + "$mod, mouse:273, resizewindow" # right click + ]; + + # repeating binds, repeats when held + binde = [ + ", XF86AudioRaiseVolume, exec, wpctl set-volume -l 1.0 @DEFAULT_AUDIO_SINK@ 5%+" + ", XF86AudioLowerVolume, exec, wpctl set-volume -l 1.0 @DEFAULT_AUDIO_SINK@ 5%-" + "Shift_R, XF86AudioRaiseVolume, exec, playerctl volume 0.05+" + "Shift_R, XF86AudioLowerVolume, exec, playerctl volume 0.05-" + + # resize window + # variable for `resizeactive` is (x, y) + # starting at 0, 0 in the top left + # meaning: + # -x = left + # +x = right + # -y = up + # +y = down + "$mod+ctrl+shift, h, resizeactive, -10 0" + "$mod+ctrl+shift, j, resizeactive, 0 10" + "$mod+ctrl+shift, k, resizeactive, 0 -10" + "$mod+ctrl+shift, l, resizeactive, 10 0" + ]; + + layerrule = [ + #"blur, rofi" + #"ignorezero, rofi" + #"blur, aurorashell" + #"ignorealpha 0.7, aurorashell" + "blur on, match:namespace waybar" + "ignore_alpha 0, match:namespace waybar" + ]; + + env = [ + "EDITOR,auravim" + + "XCURSOR_THEME,Bunny (Icy) and Strawberries" + "XCURSOR_SIZE,24" + "HYPRCURSOR_THEME,Bunny (Icy) and Strawberries" + "HYPRCURSOR_SIZE,24" + + "QT_QPA_PLATFORM,wayland" + ]; + }; + }; + + # extra hyprland config for organisation, + # and to load colors.conf + # writes ./hypr to ~/.config/hypr + xdg.configFile."hypr" = { + recursive = true; + source = ./hypr; + }; +} diff --git a/homes/modules/wm/river.nix b/homes/modules/wm/river.nix new file mode 100644 index 0000000..5c96740 --- /dev/null +++ b/homes/modules/wm/river.nix @@ -0,0 +1,83 @@ +{ config, inputs, pkgs, upkgs, ... }: +let + unstable = inputs.nixpkgs-unstable.legacyPackages.${pkgs.stdenv.hostPlatform.system}; +in +{ + wayland.windowManager.river = let + layout = "rivertile"; + in { + enable = true; + xwayland.enable = true; + package = upkgs.river-classic; # FIX: using upkgs version as zls is broken rn ;-; + + settings = let + main = "Super"; + + # applications + terminal = "kitty"; + browser = "firefox"; + in { + default-layout = "${layout}"; + output-layout = "${layout}"; + border-width = 1; + + spawn = [ + ''${layout}'' + + "awww-daemon" + "waybar" + ]; + + map.normal = { + "${main} C" = "close"; # close focused window + "${main}+Alt Delete" = "exit"; # exit river + + # app launcher + "${main} D" = ''spawn "pkill -x rofi || rofi -show drun -show-icons"''; + "Alt Tab" = ''spawn "pkill -x rofi || rofi -modi window -show window -show-icons"''; + + # spawn applications + "${main} T" = ''spawn "${terminal}"''; + "${main} R" = ''spawn "${browser}"''; + + # move focused view to top of layout stack + "${main} N" = ''zoom''; + + # focus next/previous view + "${main} J" = "focus-view previous"; + "${main} K" = "focus-view next"; + # move to next/previous output + "${main} H" = "focus-output previous"; + "${main} L" = "focus-output next"; + + # swap next/previous view + "${main}+Alt J" = "swap previous"; + "${main}+Alt K" = "swap next"; + # send view to next/previous output + # and switch to that output (wip) + "${main}+Alt H" = "send-to-output previous"; + #"${main}+Alt H" = "focus-output previous"; + "${main}+Alt L" = "send-to-output next"; + #"${main}+Alt L" = "focus-output next"; + + # move views + #"${main}+Alt H" = "move left 100"; + #"${main}+Alt J" = "move down 100"; + #"${main}+Alt K" = "move up 100"; + #"${main}+Alt L" = "move right 100"; + + # snap views + #"${main}+Control H" = "snap left"; + #"${main}+Control J" = "snap down"; + #"${main}+Control K" = "snap up"; + #"${main}+Control L" = "snap right"; + + # resize views + #"${main}+Shift H" = "resize horizontal -100"; + #"${main}+Shift J" = "resize vertical -100"; + #"${main}+Shift K" = "resize vertical 100"; + #"${main}+Shift L" = "resize horizontal 100"; + }; + }; + }; +} diff --git a/homes/modules/wm/sway.nix b/homes/modules/wm/sway.nix new file mode 100644 index 0000000..c5dd3be --- /dev/null +++ b/homes/modules/wm/sway.nix @@ -0,0 +1,53 @@ +{ config, inputs, pkgs, ... }: +let + unstable = inputs.nixpkgs-unstable.legacyPackages.${pkgs.stdenv.hostPlatform.system}; +in +{ + wayland.windowManager.sway = { + enable = true; + config = rec { + modifier = "Mod4"; # Mod4 = Super/Meta + terminal = "kitty"; + + # disable sway bar + bars = [ ]; + + # set border colors + #colors = { + #focused = + + startup = [ + { command = "awww-daemon"; } + { command = "waybar"; } + ]; + + keybindings = let + main = config.wayland.windowManager.sway.config.modifier; + terminal = config.wayland.windowManager.sway.config.terminal; + browser = "firefox"; + in { + "${main}+c" = "kill"; # close focused window + "${main}+Alt+Delete" = "exit"; # exit sway + + # open launcher + "${main}+d" = "exec pkill -x rofi || rofi -show drun -show-icons"; + "Alt+Tab" = "exec pkill -x rofi || rofi -modi window -show window -show-icons"; + + "${main}+t" = "exec ${terminal}"; # open terminal + "${main}+r" = "exec ${browser}"; # open browser + + # move focus + "${main}+h" = "focus left"; + "${main}+j" = "focus down"; + "${main}+k" = "focus up"; + "${main}+l" = "focus right"; + + # move focused window + "${main}+Alt+h" = "move left"; + "${main}+Alt+j" = "move down"; + "${main}+Alt+k" = "move up"; + "${main}+Alt+l" = "move right"; + }; + }; + }; +} diff --git a/hosts/nixarawrui/default.nix b/hosts/nixarawrui/default.nix new file mode 100644 index 0000000..c3d5c29 --- /dev/null +++ b/hosts/nixarawrui/default.nix @@ -0,0 +1,371 @@ +{ + inputs, + pkgs, + upkgs, + root, + ... +}: let + hyprland-git = inputs.hyprland-git.packages.${pkgs.stdenv.hostPlatform.system}; +in { + imports = [ + ./hardware-configuration.nix + + ./modules/amdgpu-ignore-ctx-privileges.nix + ]; + + # Enable the Flakes feature and the accompaying new nix command-line tool + nix.settings = { + experimental-features = ["nix-command" "flakes"]; + download-buffer-size = 524288000; + }; + + nixpkgs.config.allowUnfree = true; + + # Use the systemd-boot EFI boot loader. + boot = rec { + initrd.kernelModules = ["amdgpu"]; + + loader = { + systemd-boot.enable = true; + efi.canTouchEfiVariables = true; + }; + + # kernelPackages = pkgs.cachyosKernels.linuxPackages-cachyos-latest-lto-x86_64-v4; + kernelPackages = pkgs.linuxPackages_latest; + kernelModules = ["v4l2loopback"]; + extraModulePackages = with kernelPackages; [v4l2loopback]; + + # qemu + # boot.binfmt.emulatedSystems = [ + # "riscv64-linux" + # ]; + # the following line is from: + # https://discourse.nixos.org/t/chroot-into-arm-container-with-systemd-nspawn/34735 + # fixed my arch-chroot issue when trying to setup a risc v sd card for + # the mango pi mq pro + binfmt.preferStaticEmulators = true; + }; + + # bluetooth + services.blueman.enable = true; # gui bluetooth manager + + networking = { + hostName = "nixarawrui"; + networkmanager.enable = true; + firewall = { + enable = true; + # allows wireguard to route all traffic through default route <3 + checkReversePath = "loose"; + + allowedTCPPorts = [ + 21110 # slimevr + 44949 # rquickshare + ]; + allowedUDPPorts = [ + 6969 # slimevr + 8266 # slimevr + 35903 # slimevr + 44949 # rquickshare + ]; + }; + + nftables.enable = true; + wireguard.enable = true; + }; + + # hardware / driver stuff + hardware = { + keyboard = { + qmk.enable = true; + }; + opentabletdriver.enable = true; + wooting.enable = true; + xone.enable = true; + bluetooth.enable = true; + }; + + virtualisation = { + podman = { + enable = true; + dockerCompat = true; + }; + waydroid.enable = true; + }; + + environment.sessionVariables = { + NIXOS_OZONE_WL = "1"; + + # makes portals work correctly + QT_QPA_PLATFORMTHEME = "xdgdesktopportal"; + #QT_QPA_PLATFORMTHEME = "flatpak"; # sometimes might need this + }; + + xdg.portal = { + enable = true; + + wlr = { + enable = true; + }; + + extraPortals = with pkgs; [ + xdg-desktop-portal-termfilechooser + ]; + + config.common = { + "org.freedesktop.impl.portal.FileChooser" = ["termfilechooser"]; + }; + }; + + time.timeZone = "Europe/London"; + + i18n = { + defaultLocale = "en_US.UTF-8"; + supportedLocales = [ + "en_US.UTF-8/UTF-8" + "ja_JP.UTF-8/UTF-8" + ]; + }; + console = { + font = "Lat2-Terminus16"; + keyMap = "us"; + }; + + hardware.graphics = { + enable = true; + enable32Bit = true; + + extraPackages = with pkgs; [ + libva-vdpau-driver + libvdpau-va-gl + ]; + }; + + services = { + displayManager.sddm.enable = true; + displayManager.sddm.wayland.enable = true; + + udisks2.enable = true; + flatpak.enable = true; + + gnome.gnome-keyring.enable = true; + + # used for piper so u can configure silly little mice :3 + ratbagd.enable = true; + + # Enable sound. + pipewire = { + enable = true; + audio.enable = true; + wireplumber.enable = true; + + alsa.enable = true; + alsa.support32Bit = true; + pulse.enable = true; + }; + + udev = { + enable = true; + packages = with pkgs; [ + # adds via support for keyboards and stuffs :3 (needs reboot) + via + + # slimevr :33333333333 (i'm queer) + slimevr + platformio + ]; + extraRules = '' + # Wooting One Legacy + SUBSYSTEM=="hidraw", ATTRS{idVendor}=="03eb", ATTRS{idProduct}=="ff01", TAG+="uaccess" + SUBSYSTEM=="usb", ATTRS{idVendor}=="03eb", ATTRS{idProduct}=="ff01", TAG+="uaccess" + + # Wooting One update mode + SUBSYSTEM=="hidraw", ATTRS{idVendor}=="03eb", ATTRS{idProduct}=="2402", TAG+="uaccess" + + # Wooting Two LegacySUBSYSTEM=="hidraw", ATTRS{idVendor}=="03eb", ATTRS{idProduct}=="ff02", TAG+="uaccess" + SUBSYSTEM=="usb", ATTRS{idVendor}=="03eb", ATTRS{idProduct}=="ff02", TAG+="uaccess" + + # Wooting Two update mode + SUBSYSTEM=="hidraw", ATTRS{idVendor}=="03eb", ATTRS{idProduct}=="2403", TAG+="uaccess" + + # Generic Wootings + SUBSYSTEM=="hidraw", ATTRS{idVendor}=="31e3", TAG+="uaccess" + SUBSYSTEM=="usb", ATTRS{idVendor}=="31e3", TAG+="uaccess" + ''; + }; + }; + + security = { + rtkit.enable = true; + polkit.enable = true; + }; + + # Enable touchpad support (enabled default in most desktopManager). + # services.libinput.enable = true; + # Define a user account. Don't forget to set a password with ‘passwd’. + users = { + users.aurora = { + isNormalUser = true; + uid = 1000; + extraGroups = ["wheel" "disk" "input" "video" "audio" "networkmanager" "games"]; + + shell = pkgs.zsh; + + packages = with pkgs; [ + flatpak + tree + ]; + }; + groups.games = { + gid = 7000; + }; + }; + + home-manager = { + useGlobalPkgs = true; + useUserPackages = true; + + users.aurora = import ../../homes/aurora; + extraSpecialArgs = {inherit inputs upkgs root;}; + }; + + programs = { + # nix-ld runs unpatched dynamic binaries on nixos :3 + nix-ld.enable = true; + + # needed for gpg else no pinentry apparently + gnupg = { + agent.enable = true; + }; + + nh = { + enable = true; + clean.enable = true; + clean.extraArgs = "--keep-since 14d --keep 8"; + flake = "/etc/nixos"; # default flake + }; + + # hyprland, river, and sway have to be enabled here + # for there to be systemd entries for login managers + + # hyprland has to be enabled here for xdg portals + # to work properly on hyprland + hyprland = { + enable = true; + package = hyprland-git.hyprland; + portalPackage = hyprland-git.xdg-desktop-portal-hyprland; + }; + + river-classic = { + package = upkgs.river-classic; # FIX: using upkgs version as zls is broken rn ;-; + enable = true; + }; + + sway = { + enable = true; + wrapperFeatures.gtk = true; + }; + + # steam has to be enabled here + steam = { + enable = true; + package = pkgs.millennium-steam; + remotePlay.openFirewall = true; + dedicatedServer.openFirewall = true; + localNetworkGameTransfers.openFirewall = true; + gamescopeSession.enable = true; + }; + + alvr = { + enable = true; + package = upkgs.alvr; + openFirewall = true; + }; + + envision = { + enable = true; + openFirewall = true; + }; + + # any shell that you wanna use needs to be enabled globally + # to set the default shell for users + # per-user config is done in home manager + zsh.enable = true; + fish.enable = true; + + silentSDDM = { + enable = false; + theme = "rei"; + }; + }; + + # List packages installed in system profile. To search, run: + # $ nix search wget + environment.systemPackages = with pkgs; [ + # linux packages!!! + linuxPackages.v4l2loopback + + # android yay + android-tools + + # network manager extra packages + networkmanager-openvpn + + # um makes my keyboard worky + via + + # wine - needed for lutris :3 + wineWowPackages.stable + + # utils, apps, important default stuff ig :3 + neovim + wget + git + bash + + # waydroid needs it apparently for clipboard sharing?? + wl-clipboard + (waydroid.override { + python3Packages = pkgs.python312Packages; + }) + + # game stuff :3 + (lutris.override { + extraPkgs = pkgs: [ + libadwaita + ]; + }) + (steam.override { + extraPkgs = pkgs: [ + nss + xorg.libX11 + xorg.libXScrnSaver + ]; + }).run + + inputs.nix-alien.packages.${stdenv.hostPlatform.system}.nix-alien + ]; + + # Copy the NixOS configuration file and link it from the resulting system + # (/run/current-system/configuration.nix). This is useful in case you + # accidentally delete configuration.nix. + # system.copySystemConfiguration = true; + + # This option defines the first version of NixOS you have installed on this particular machine, + # and is used to maintain compatibility with application data (e.g. databases) created on older NixOS versions. + # + # Most users should NEVER change this value after the initial install, for any reason, + # even if you've upgraded your system to a new NixOS release. + # + # This value does NOT affect the Nixpkgs version your packages and OS are pulled from, + # so changing it will NOT upgrade your system - see https://nixos.org/manual/nixos/stable/#sec-upgrading for how + # to actually do that. + # + # This value being lower than the current NixOS release does NOT mean your system is + # out of date, out of support, or vulnerable. + # + # Do NOT change this value unless you have manually inspected all the changes it would make to your configuration, + # and migrated your data accordingly. + # + # For more information, see `man configuration.nix` or https://nixos.org/manual/nixos/stable/options#opt-system.stateVersion . + system.stateVersion = "24.11"; # Did you read the comment? +} diff --git a/hosts/nixarawrui/hardware-configuration.nix b/hosts/nixarawrui/hardware-configuration.nix new file mode 100644 index 0000000..fb2aef7 --- /dev/null +++ b/hosts/nixarawrui/hardware-configuration.nix @@ -0,0 +1,64 @@ +# 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 = [ "nvme" "xhci_pci" "ahci" "usb_storage" "usbhid" "sd_mod" ]; + boot.initrd.kernelModules = [ ]; + boot.kernelModules = [ "kvm-amd" ]; + boot.extraModulePackages = [ ]; + + fileSystems."/" = + { device = "/dev/disk/by-uuid/257dd2c7-59b1-431e-a5a1-c7db00b3312b"; + fsType = "btrfs"; + options = [ "subvol=@" ]; + }; + + fileSystems."/home" = + { device = "/dev/disk/by-uuid/257dd2c7-59b1-431e-a5a1-c7db00b3312b"; + fsType = "btrfs"; + options = [ "subvol=@home" ]; + }; + + fileSystems."/nix" = + { device = "/dev/disk/by-uuid/257dd2c7-59b1-431e-a5a1-c7db00b3312b"; + fsType = "btrfs"; + options = [ "subvol=@nix" ]; + }; + + fileSystems."/games" = + { device = "/dev/disk/by-uuid/257dd2c7-59b1-431e-a5a1-c7db00b3312b"; + fsType = "btrfs"; + options = [ "subvol=@games" ]; + }; + + fileSystems."/data" = + { device = "/dev/disk/by-uuid/257dd2c7-59b1-431e-a5a1-c7db00b3312b"; + fsType = "btrfs"; + options = [ "subvol=@data" ]; + }; + + fileSystems."/boot" = + { device = "/dev/disk/by-uuid/63DC-1AEB"; + fsType = "vfat"; + options = [ "fmask=0077" "dmask=0077" ]; + }; + + swapDevices = [ ]; + + # 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..useDHCP`. + networking.useDHCP = lib.mkDefault true; + # networking.interfaces.enp10s0.useDHCP = lib.mkDefault true; + # networking.interfaces.wlp9s0.useDHCP = lib.mkDefault true; + + nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux"; + hardware.cpu.amd.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware; +} diff --git a/hosts/nixarawrui/modules/amdgpu-ignore-ctx-privileges.nix b/hosts/nixarawrui/modules/amdgpu-ignore-ctx-privileges.nix new file mode 100644 index 0000000..8498061 --- /dev/null +++ b/hosts/nixarawrui/modules/amdgpu-ignore-ctx-privileges.nix @@ -0,0 +1,32 @@ +{ + pkgs, + lib, + config, + ... +}: let + enabled = config.boot.kernelPatchesOptions.amd-ignore-ctx-privileges; +in { + options = { + boot.kernelPatchesOptions.amd-ignore-ctx-privileges = + lib.mkEnableOption "amd-ignore-ctx-privileges"; + }; + + config = lib.mkIf enabled { + nixpkgs.overlays = [ + (self: super: { + amdgpu-ignore-ctx-privileges = super.fetchpatch { + name = "cap_sys_nice_begone.patch"; + url = "https://github.com/Frogging-Family/community-patches/raw/master/linux61-tkg/cap_sys_nice_begone.mypatch"; + hash = "sha256-Y3a0+x2xvHsfLax/uwycdJf3xLxvVfkfDVqjkxNaYEo="; + }; + }) + ]; + + boot.kernelPatches = [ + { + name = "amdgpu-ignore-ctx-privileges"; + patch = pkgs.amdgpu-ignore-ctx-privileges; + } + ]; + }; +} diff --git a/overlays.nix b/overlays.nix new file mode 100644 index 0000000..8d28bdd --- /dev/null +++ b/overlays.nix @@ -0,0 +1,13 @@ + (self: super: { + ekphos = import ../packages/ekphos { + pkgs = super; + }; + + element-desktop = super.element-desktop.overrideAttrs (final: prev: { + desktopItems = [ + ((builtins.elemAt prev.desktopItems 0).override { + exec = "element-desktop %u --password-store=\"gnome-libsecret\""; + }) + ]; + }); + }) From 850d3c539be2dde0d102f96c037c0ce4d6f14a28 Mon Sep 17 00:00:00 2001 From: foxora Date: Thu, 12 Feb 2026 18:53:24 +0000 Subject: [PATCH 02/36] init --- README.md | 83 + flake.lock | 1805 +++++++++++++++++ flake.nix | 92 + homes/aurora/default.nix | 314 +++ homes/modules/de/awww.nix | 10 + homes/modules/de/hyprlock/hypr/theme.conf | 20 + homes/modules/de/hyprlock/hyprlock.nix | 41 + homes/modules/de/rofi/rofi.nix | 17 + homes/modules/de/rofi/theme.rasi | 0 homes/modules/de/waybar/style.css | 165 ++ homes/modules/de/waybar/waybar.nix | 104 + homes/modules/programs/iamb/config.toml | 10 + homes/modules/programs/iamb/iamb.nix | 13 + homes/modules/programs/neovim/init.lua | 69 + .../programs/neovim/lua/lsp/capabilities.lua | 59 + .../programs/neovim/lua/lsp/completion.lua | 88 + .../neovim/lua/lsp/completion.lua.old | 203 ++ .../modules/programs/neovim/lua/lsp/init.lua | 5 + homes/modules/programs/neovim/lua/lsp/lsp.lua | 123 ++ .../neovim/lua/nixCatsUtils/lzUtils.lua | 135 ++ .../programs/neovim/lua/plugins/dressing.lua | 5 + .../programs/neovim/lua/plugins/fyler.lua | 15 + .../programs/neovim/lua/plugins/init.lua | 8 + .../neovim/lua/plugins/mini-hipatterns.lua | 76 + .../programs/neovim/lua/plugins/neocord.lua | 5 + .../programs/neovim/lua/plugins/telescope.lua | 36 + .../neovim/lua/plugins/treesitter.lua | 95 + homes/modules/programs/neovim/nixcats.nix | 213 ++ homes/modules/programs/nixcord.nix | 250 +++ homes/modules/programs/spicetify.nix | 26 + homes/modules/programs/yazi/yazi.nix | 86 + homes/modules/scripts/task-manager.sh | 2 + homes/modules/services/dunst.nix | 33 + .../modules/services/keepassxc/keepassxc.ini | 12 + .../modules/services/keepassxc/keepassxc.nix | 23 + .../services/pulse/client.conf.template | 1 + homes/modules/services/pulse/pulse.nix | 9 + .../wireplumber.conf.d/50-alsa-config.conf | 0 .../services/wireplumber/wireplumber.nix | 8 + homes/modules/shell/fastfetch/fastfetch.nix | 12 + .../modules/shell/fastfetch/themes/laimu.json | 0 homes/modules/shell/programs.nix | 26 + homes/modules/shell/zellij/zellij.nix | 17 + homes/modules/shell/zsh.nix | 86 + homes/modules/themeing/hellwal/hellwal.nix | 20 + .../templates/aurorashell-template.toml | 18 + .../wallust/templates/discord-template.css | 20 + .../wallust/templates/hyprland-template.conf | 18 + .../wallust/templates/imhex-template.theme | 405 ++++ .../wallust/templates/kitty-template.conf | 45 + .../wallust/templates/neovim-template | 18 + .../wallust/templates/spicetify-template.ini | 0 .../wallust/templates/waybar-template.css | 18 + .../wallust/templates/zellij-template.kdl | 45 + homes/modules/themeing/wallust/wallust.nix | 20 + homes/modules/themeing/wallust/wallust.toml | 35 + .../wm/hyprland/hypr/keybinds/virtual.conf | 43 + homes/modules/wm/hyprland/hypr/theme.conf | 19 + .../modules/wm/hyprland/hypr/windowrules.conf | 61 + homes/modules/wm/hyprland/hyprland.nix | 314 +++ homes/modules/wm/river.nix | 83 + homes/modules/wm/sway.nix | 53 + hosts/nixarawrui/default.nix | 371 ++++ hosts/nixarawrui/hardware-configuration.nix | 64 + .../modules/amdgpu-ignore-ctx-privileges.nix | 32 + overlays.nix | 13 + 66 files changed, 6115 insertions(+) create mode 100644 README.md create mode 100644 flake.lock create mode 100644 flake.nix create mode 100644 homes/aurora/default.nix create mode 100644 homes/modules/de/awww.nix create mode 100644 homes/modules/de/hyprlock/hypr/theme.conf create mode 100644 homes/modules/de/hyprlock/hyprlock.nix create mode 100644 homes/modules/de/rofi/rofi.nix create mode 100644 homes/modules/de/rofi/theme.rasi create mode 100644 homes/modules/de/waybar/style.css create mode 100644 homes/modules/de/waybar/waybar.nix create mode 100644 homes/modules/programs/iamb/config.toml create mode 100644 homes/modules/programs/iamb/iamb.nix create mode 100644 homes/modules/programs/neovim/init.lua create mode 100644 homes/modules/programs/neovim/lua/lsp/capabilities.lua create mode 100644 homes/modules/programs/neovim/lua/lsp/completion.lua create mode 100644 homes/modules/programs/neovim/lua/lsp/completion.lua.old create mode 100644 homes/modules/programs/neovim/lua/lsp/init.lua create mode 100644 homes/modules/programs/neovim/lua/lsp/lsp.lua create mode 100644 homes/modules/programs/neovim/lua/nixCatsUtils/lzUtils.lua create mode 100644 homes/modules/programs/neovim/lua/plugins/dressing.lua create mode 100644 homes/modules/programs/neovim/lua/plugins/fyler.lua create mode 100644 homes/modules/programs/neovim/lua/plugins/init.lua create mode 100644 homes/modules/programs/neovim/lua/plugins/mini-hipatterns.lua create mode 100644 homes/modules/programs/neovim/lua/plugins/neocord.lua create mode 100644 homes/modules/programs/neovim/lua/plugins/telescope.lua create mode 100644 homes/modules/programs/neovim/lua/plugins/treesitter.lua create mode 100644 homes/modules/programs/neovim/nixcats.nix create mode 100644 homes/modules/programs/nixcord.nix create mode 100644 homes/modules/programs/spicetify.nix create mode 100644 homes/modules/programs/yazi/yazi.nix create mode 100755 homes/modules/scripts/task-manager.sh create mode 100644 homes/modules/services/dunst.nix create mode 100644 homes/modules/services/keepassxc/keepassxc.ini create mode 100644 homes/modules/services/keepassxc/keepassxc.nix create mode 100644 homes/modules/services/pulse/client.conf.template create mode 100644 homes/modules/services/pulse/pulse.nix create mode 100644 homes/modules/services/wireplumber/config/wireplumber.conf.d/50-alsa-config.conf create mode 100644 homes/modules/services/wireplumber/wireplumber.nix create mode 100644 homes/modules/shell/fastfetch/fastfetch.nix create mode 100644 homes/modules/shell/fastfetch/themes/laimu.json create mode 100644 homes/modules/shell/programs.nix create mode 100644 homes/modules/shell/zellij/zellij.nix create mode 100644 homes/modules/shell/zsh.nix create mode 100644 homes/modules/themeing/hellwal/hellwal.nix create mode 100644 homes/modules/themeing/wallust/templates/aurorashell-template.toml create mode 100644 homes/modules/themeing/wallust/templates/discord-template.css create mode 100644 homes/modules/themeing/wallust/templates/hyprland-template.conf create mode 100644 homes/modules/themeing/wallust/templates/imhex-template.theme create mode 100644 homes/modules/themeing/wallust/templates/kitty-template.conf create mode 100644 homes/modules/themeing/wallust/templates/neovim-template create mode 100644 homes/modules/themeing/wallust/templates/spicetify-template.ini create mode 100644 homes/modules/themeing/wallust/templates/waybar-template.css create mode 100644 homes/modules/themeing/wallust/templates/zellij-template.kdl create mode 100644 homes/modules/themeing/wallust/wallust.nix create mode 100644 homes/modules/themeing/wallust/wallust.toml create mode 100644 homes/modules/wm/hyprland/hypr/keybinds/virtual.conf create mode 100644 homes/modules/wm/hyprland/hypr/theme.conf create mode 100644 homes/modules/wm/hyprland/hypr/windowrules.conf create mode 100644 homes/modules/wm/hyprland/hyprland.nix create mode 100644 homes/modules/wm/river.nix create mode 100644 homes/modules/wm/sway.nix create mode 100644 hosts/nixarawrui/default.nix create mode 100644 hosts/nixarawrui/hardware-configuration.nix create mode 100644 hosts/nixarawrui/modules/amdgpu-ignore-ctx-privileges.nix create mode 100644 overlays.nix diff --git a/README.md b/README.md new file mode 100644 index 0000000..36d887e --- /dev/null +++ b/README.md @@ -0,0 +1,83 @@ +## My NixOS Flake +### Philosophy +> [!TODO] My philosophy has kinda changed since the beginning + +### Repo Structure +Modules are organised into groups (ie "Core"), from here a module is structured as either: +1. a single `.nix` file (ie bluetooth.nix). I do this when I won't implement an alternative +2. a directory (ie `sound`) containing a set of alternative implementations and a `default.nix` +that simply imports one of the implementations. For the `sound` example I currently have it structured +to default to `pipewire.nix`. I haven't made alternatives yet but the idea is that it is HIGHLY likely +I do in future. + +### Security Considerations +###### Hashing +For services where password hashing is done infrequently (ie my forgejo instance with signups disabled) +use argon2 (argon2id) with default `argon2$2$65536$8$50` (typically). Otherwise bcrypt is preferred. + +### TODO +There are a lot of commented `# TODO: ...` items in this repository. +All (most) of my commented directives can be found via this pattern: +```sh +grep -rnE '^\s*(//|#)\s*[A-Z]*:\s*.+$' --exclude-dir=.git 2>/dev/null +``` + +### Random Explanation of Fonts +There are four types of fonts (to my knowledge at least): +1. serif (funny squigles / small elegant strokes included) +2. sans-serif (meaning "without serifs") +3. monospace (all glyphs are of a uniform size) +4. emoji (cute lil faces) + +Fun fact: on Android, the emojis you are seeing are part of the noto-emoji font :) + +For finding a font for programming I highly recommend trying https://www.codingfont.com/ + + +### Links +#### Inspiration +##### Explaining my Vision with r/unixporn posts +I want the side panel from https://www.reddit.com/r/unixporn/comments/12wpvyf/hyprland_eww_is_all_i_need/ +but not the colour scheme and I'm 50/50 on the bar being on th eleft side lol. Also I love the volume bar on the right! + +https://www.reddit.com/r/unixporn/comments/12uy6q6/hyprland_first_time_trying_a_wm_ended_up/ +I love love love their rofi theme, everything else is eh (except the background switching is cool) + +https://www.reddit.com/r/unixporn/comments/1avnfjn/hyprland_animations_theme_generation_settings/ +I love their settings apps + +https://www.reddit.com/r/unixporn/comments/u7vgej/desktop_endeavouros_gnome_42/ +I like to imagine they have the ability to have nothing but apps on their screen (like a do not disturb / focus mode) + +https://www.reddit.com/r/unixporn/comments/xkvmhy/hyprland_dreamy/ +Their window decorations and bar are great, also being able to hide everything upwards is so cool + +https://www.reddit.com/r/unixporn/comments/vkcasz/i3gaps_i_prefer_light_mode/ +If their colour scheme was a little less white I'd love it but overall one of my favourites every + +##### Other Inspiring Shtuff +1. https://github.com/sabrehagen/desktop-environment + +#### Wallpaper Sources +1. https://www.wallpaperflare.com/ +2. https://alphacoders.com + especially this one person: https://alphacoders.com/users/profile/69089/robokoboto + and also the lofi category: https://alphacoders.com/lofi + +#### Teach Yourself Nix +1. https://github.com/XNM1/linux-nixos-hyprland-config-dotfiles) + Really good security oriented NixOS stuff +2. https://jade.fyi/blog/flakes-arent-real/ + Interesting blog post on using flakes + +#### Credits +1. https://github.com/XNM1/linux-nixos-hyprland-config-dotfiles + The simplicity of their layout is amazing, was really good to pick out small modules and learn how something works / is configured. +2. https://github.com/Misterio77/nix-starter-configs + Really great starter config for learning how parts interact and how to generally structure flakes +3. https://nixos.wiki/wiki/Fonts + Wiki page explaining how to install fonts and nerd fonts on NixOS +4. https://github.com/adi1090x/rofi + For the Rofi theme +5. https://github.com/zDyanTB/HyprNova + For the really cool hyprlock theme diff --git a/flake.lock b/flake.lock new file mode 100644 index 0000000..73d8139 --- /dev/null +++ b/flake.lock @@ -0,0 +1,1805 @@ +{ + "nodes": { + "abseil-src": { + "flake": false, + "locked": { + "lastModified": 1722535511, + "narHash": "sha256-51jpDhdZ0n+KLmxh8KVaTz53pZAB0dHjmILFX+OLud4=", + "owner": "abseil", + "repo": "abseil-cpp", + "rev": "4447c7562e3bc702ade25105912dce503f0c4010", + "type": "github" + }, + "original": { + "owner": "abseil", + "ref": "20240722.0", + "repo": "abseil-cpp", + "type": "github" + } + }, + "aquamarine": { + "inputs": { + "hyprutils": [ + "hyprland-git", + "hyprutils" + ], + "hyprwayland-scanner": [ + "hyprland-git", + "hyprwayland-scanner" + ], + "nixpkgs": [ + "hyprland-git", + "nixpkgs" + ], + "systems": [ + "hyprland-git", + "systems" + ] + }, + "locked": { + "lastModified": 1765900596, + "narHash": "sha256-+hn8v9jkkLP9m+o0Nm5SiEq10W0iWDSotH2XfjU45fA=", + "owner": "hyprwm", + "repo": "aquamarine", + "rev": "d83c97f8f5c0aae553c1489c7d9eff3eadcadace", + "type": "github" + }, + "original": { + "owner": "hyprwm", + "repo": "aquamarine", + "type": "github" + } + }, + "asio-src": { + "flake": false, + "locked": { + "lastModified": 1702548444, + "narHash": "sha256-8Xo6J6+dTvDtsthjbLMMTInHMDnMMM0rQwzbZu70J/s=", + "owner": "chriskohlhoff", + "repo": "asio", + "rev": "22ccfc94fc77356f7820601f9f33b9129a337d2d", + "type": "github" + }, + "original": { + "owner": "chriskohlhoff", + "ref": "asio-1-30-0", + "repo": "asio", + "type": "github" + } + }, + "awww": { + "inputs": { + "flake-compat": "flake-compat", + "nixpkgs": "nixpkgs", + "rust-overlay": "rust-overlay" + }, + "locked": { + "lastModified": 1770895252, + "narHash": "sha256-TUGZVDcC5xsrWVnpBNosAG1cTy+aWchCWXPyeLZdnGM=", + "ref": "refs/heads/main", + "rev": "2c86d41d07471f518e24f5cd1f586e4d2a32d12c", + "revCount": 1331, + "type": "git", + "url": "https://codeberg.org/LGFae/awww" + }, + "original": { + "type": "git", + "url": "https://codeberg.org/LGFae/awww" + } + }, + "cachyos": { + "inputs": { + "cachyos-kernel": "cachyos-kernel", + "cachyos-kernel-patches": "cachyos-kernel-patches", + "flake-compat": "flake-compat_2", + "flake-parts": "flake-parts", + "nixpkgs": "nixpkgs_2" + }, + "locked": { + "lastModified": 1770834979, + "narHash": "sha256-gh7GOW1y06dsfCnzBlx+qkkDUqnr1AhXBRjihUTB3w4=", + "owner": "xddxdd", + "repo": "nix-cachyos-kernel", + "rev": "36658048dacf3e409f17dfd1465eee1e4e217432", + "type": "github" + }, + "original": { + "owner": "xddxdd", + "repo": "nix-cachyos-kernel", + "type": "github" + } + }, + "cachyos-kernel": { + "flake": false, + "locked": { + "lastModified": 1770747435, + "narHash": "sha256-MR4xm9zQZ5LuoHWWdrlWJyEJablzx36nY19dXpY4VE4=", + "owner": "CachyOS", + "repo": "linux-cachyos", + "rev": "661da6f123bf3984e462fe9f932a38e643d6e081", + "type": "github" + }, + "original": { + "owner": "CachyOS", + "repo": "linux-cachyos", + "type": "github" + } + }, + "cachyos-kernel-patches": { + "flake": false, + "locked": { + "lastModified": 1770760828, + "narHash": "sha256-bcAZJG390mv9fFJwzyFl3iRyrTpSTWsra14qBJujR4A=", + "owner": "CachyOS", + "repo": "kernel-patches", + "rev": "87a5bb45dfee4cf31a57472591cb5013a7e9afcf", + "type": "github" + }, + "original": { + "owner": "CachyOS", + "repo": "kernel-patches", + "type": "github" + } + }, + "cerulean": { + "inputs": { + "deploy-rs": "deploy-rs", + "nixpkgs": [ + "nixpkgs" + ], + "nixpkgs-unstable": [ + "nixpkgs-unstable" + ], + "nt": "nt", + "systems": [ + "systems" + ] + }, + "locked": { + "lastModified": 1770914135, + "narHash": "sha256-gAOwv1il9GUxsS7XGF612Ftm9+cMvd1QOINwJlWpCnQ=", + "owner": "emilelcb", + "repo": "Cerulean", + "rev": "b151f45dfbdb0849d3c24940af946f11652dd8bf", + "type": "github" + }, + "original": { + "owner": "emilelcb", + "repo": "Cerulean", + "type": "github" + } + }, + "crane": { + "locked": { + "lastModified": 1759893430, + "narHash": "sha256-yAy4otLYm9iZ+NtQwTMEbqHwswSFUbhn7x826RR6djw=", + "owner": "ipetkov", + "repo": "crane", + "rev": "1979a2524cb8c801520bd94c38bb3d5692419d93", + "type": "github" + }, + "original": { + "owner": "ipetkov", + "repo": "crane", + "type": "github" + } + }, + "curl-src": { + "flake": false, + "locked": { + "lastModified": 1743572790, + "narHash": "sha256-huAGWNm2rYBmgzUuYQ21IYp2skyQECelEkXPMBJY3cE=", + "owner": "curl", + "repo": "curl", + "rev": "1c3149881769e7bd79b072e48374e4c2b3678b2f", + "type": "github" + }, + "original": { + "owner": "curl", + "ref": "curl-8_13_0", + "repo": "curl", + "type": "github" + } + }, + "deploy-rs": { + "inputs": { + "flake-compat": "flake-compat_3", + "nixpkgs": "nixpkgs_3", + "utils": "utils" + }, + "locked": { + "lastModified": 1766051518, + "narHash": "sha256-znKOwPXQnt3o7lDb3hdf19oDo0BLP4MfBOYiWkEHoik=", + "owner": "serokell", + "repo": "deploy-rs", + "rev": "d5eff7f948535b9c723d60cd8239f8f11ddc90fa", + "type": "github" + }, + "original": { + "owner": "serokell", + "repo": "deploy-rs", + "type": "github" + } + }, + "fenix": { + "inputs": { + "nixpkgs": [ + "iamb", + "nixpkgs" + ], + "rust-analyzer-src": "rust-analyzer-src" + }, + "locked": { + "lastModified": 1760510549, + "narHash": "sha256-NP+kmLMm7zSyv4Fufv+eSJXyqjLMUhUfPT6lXRlg/bU=", + "owner": "nix-community", + "repo": "fenix", + "rev": "ef7178cf086f267113b5c48fdeb6e510729c8214", + "type": "github" + }, + "original": { + "owner": "nix-community", + "repo": "fenix", + "type": "github" + } + }, + "flake-compat": { + "flake": false, + "locked": { + "lastModified": 1761588595, + "narHash": "sha256-XKUZz9zewJNUj46b4AJdiRZJAvSZ0Dqj2BNfXvFlJC4=", + "owner": "edolstra", + "repo": "flake-compat", + "rev": "f387cd2afec9419c8ee37694406ca490c3f34ee5", + "type": "github" + }, + "original": { + "owner": "edolstra", + "repo": "flake-compat", + "type": "github" + } + }, + "flake-compat_2": { + "flake": false, + "locked": { + "lastModified": 1767039857, + "narHash": "sha256-vNpUSpF5Nuw8xvDLj2KCwwksIbjua2LZCqhV1LNRDns=", + "owner": "NixOS", + "repo": "flake-compat", + "rev": "5edf11c44bc78a0d334f6334cdaf7d60d732daab", + "type": "github" + }, + "original": { + "owner": "NixOS", + "repo": "flake-compat", + "type": "github" + } + }, + "flake-compat_3": { + "flake": false, + "locked": { + "lastModified": 1733328505, + "narHash": "sha256-NeCCThCEP3eCl2l/+27kNNK7QrwZB1IJCrXfrbv5oqU=", + "owner": "edolstra", + "repo": "flake-compat", + "rev": "ff81ac966bb2cae68946d5ed5fc4994f96d0ffec", + "type": "github" + }, + "original": { + "owner": "edolstra", + "repo": "flake-compat", + "type": "github" + } + }, + "flake-compat_4": { + "flake": false, + "locked": { + "lastModified": 1761588595, + "narHash": "sha256-XKUZz9zewJNUj46b4AJdiRZJAvSZ0Dqj2BNfXvFlJC4=", + "owner": "edolstra", + "repo": "flake-compat", + "rev": "f387cd2afec9419c8ee37694406ca490c3f34ee5", + "type": "github" + }, + "original": { + "owner": "edolstra", + "repo": "flake-compat", + "type": "github" + } + }, + "flake-compat_5": { + "locked": { + "lastModified": 1767039857, + "narHash": "sha256-vNpUSpF5Nuw8xvDLj2KCwwksIbjua2LZCqhV1LNRDns=", + "owner": "edolstra", + "repo": "flake-compat", + "rev": "5edf11c44bc78a0d334f6334cdaf7d60d732daab", + "type": "github" + }, + "original": { + "owner": "edolstra", + "repo": "flake-compat", + "type": "github" + } + }, + "flake-compat_6": { + "locked": { + "lastModified": 1733328505, + "narHash": "sha256-NeCCThCEP3eCl2l/+27kNNK7QrwZB1IJCrXfrbv5oqU=", + "rev": "ff81ac966bb2cae68946d5ed5fc4994f96d0ffec", + "revCount": 69, + "type": "tarball", + "url": "https://api.flakehub.com/f/pinned/edolstra/flake-compat/1.1.0/01948eb7-9cba-704f-bbf3-3fa956735b52/source.tar.gz" + }, + "original": { + "type": "tarball", + "url": "https://flakehub.com/f/edolstra/flake-compat/1.tar.gz" + } + }, + "flake-parts": { + "inputs": { + "nixpkgs-lib": "nixpkgs-lib" + }, + "locked": { + "lastModified": 1769996383, + "narHash": "sha256-AnYjnFWgS49RlqX7LrC4uA+sCCDBj0Ry/WOJ5XWAsa0=", + "owner": "hercules-ci", + "repo": "flake-parts", + "rev": "57928607ea566b5db3ad13af0e57e921e6b12381", + "type": "github" + }, + "original": { + "owner": "hercules-ci", + "repo": "flake-parts", + "type": "github" + } + }, + "flake-parts_2": { + "inputs": { + "nixpkgs-lib": [ + "cerulean", + "nt", + "nix-unit", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1762440070, + "narHash": "sha256-xxdepIcb39UJ94+YydGP221rjnpkDZUlykKuF54PsqI=", + "owner": "hercules-ci", + "repo": "flake-parts", + "rev": "26d05891e14c88eb4a5d5bee659c0db5afb609d8", + "type": "github" + }, + "original": { + "owner": "hercules-ci", + "repo": "flake-parts", + "type": "github" + } + }, + "flake-parts_3": { + "inputs": { + "nixpkgs-lib": "nixpkgs-lib_2" + }, + "locked": { + "lastModified": 1768135262, + "narHash": "sha256-PVvu7OqHBGWN16zSi6tEmPwwHQ4rLPU9Plvs8/1TUBY=", + "owner": "hercules-ci", + "repo": "flake-parts", + "rev": "80daad04eddbbf5a4d883996a73f3f542fa437ac", + "type": "github" + }, + "original": { + "owner": "hercules-ci", + "repo": "flake-parts", + "type": "github" + } + }, + "flake-utils": { + "inputs": { + "systems": "systems_4" + }, + "locked": { + "lastModified": 1731533236, + "narHash": "sha256-l0KFg5HjrsfsO/JpG+r7fRrqm12kzFHyUHqHCVpMMbI=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "11707dc2f618dd54ca8739b309ec4fc024de578b", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "fmt-src": { + "flake": false, + "locked": { + "lastModified": 1758127535, + "narHash": "sha256-AZDmIeU1HbadC+K0TIAGogvVnxt0oE9U6ocpawIgl6g=", + "owner": "fmtlib", + "repo": "fmt", + "rev": "e424e3f2e607da02742f73db84873b8084fc714c", + "type": "github" + }, + "original": { + "owner": "fmtlib", + "ref": "12.0.0", + "repo": "fmt", + "type": "github" + } + }, + "gitignore": { + "inputs": { + "nixpkgs": [ + "hyprland-git", + "pre-commit-hooks", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1709087332, + "narHash": "sha256-HG2cCnktfHsKV0s4XW83gU3F57gaTljL9KNSuG6bnQs=", + "owner": "hercules-ci", + "repo": "gitignore.nix", + "rev": "637db329424fd7e46cf4185293b9cc8c88c95394", + "type": "github" + }, + "original": { + "owner": "hercules-ci", + "repo": "gitignore.nix", + "type": "github" + } + }, + "home-manager": { + "inputs": { + "nixpkgs": [ + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1770910055, + "narHash": "sha256-6HJVLBtbf2ub4a3P9YG+a3CTzzUcy4HpLz4IQdiyVxY=", + "owner": "nix-community", + "repo": "home-manager", + "rev": "0825a0922a5d677f5f984bb79524569bbd1f9954", + "type": "github" + }, + "original": { + "owner": "nix-community", + "ref": "master", + "repo": "home-manager", + "type": "github" + } + }, + "home-manager_2": { + "inputs": { + "nixpkgs": [ + "zen", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1769872935, + "narHash": "sha256-07HMIGQ/WJeAQJooA7Kkg1SDKxhAiV6eodvOwTX6WKI=", + "owner": "nix-community", + "repo": "home-manager", + "rev": "f4ad5068ee8e89e4a7c2e963e10dd35cd77b37b7", + "type": "github" + }, + "original": { + "owner": "nix-community", + "repo": "home-manager", + "type": "github" + } + }, + "hyprcursor": { + "inputs": { + "hyprlang": [ + "hyprland-git", + "hyprlang" + ], + "nixpkgs": [ + "hyprland-git", + "nixpkgs" + ], + "systems": [ + "hyprland-git", + "systems" + ] + }, + "locked": { + "lastModified": 1753964049, + "narHash": "sha256-lIqabfBY7z/OANxHoPeIrDJrFyYy9jAM4GQLzZ2feCM=", + "owner": "hyprwm", + "repo": "hyprcursor", + "rev": "44e91d467bdad8dcf8bbd2ac7cf49972540980a5", + "type": "github" + }, + "original": { + "owner": "hyprwm", + "repo": "hyprcursor", + "type": "github" + } + }, + "hyprgraphics": { + "inputs": { + "hyprutils": [ + "hyprland-git", + "hyprutils" + ], + "nixpkgs": [ + "hyprland-git", + "nixpkgs" + ], + "systems": [ + "hyprland-git", + "systems" + ] + }, + "locked": { + "lastModified": 1763733840, + "narHash": "sha256-JnET78yl5RvpGuDQy3rCycOCkiKoLr5DN1fPhRNNMco=", + "owner": "hyprwm", + "repo": "hyprgraphics", + "rev": "8f1bec691b2d198c60cccabca7a94add2df4ed1a", + "type": "github" + }, + "original": { + "owner": "hyprwm", + "repo": "hyprgraphics", + "type": "github" + } + }, + "hyprland-git": { + "inputs": { + "aquamarine": "aquamarine", + "hyprcursor": "hyprcursor", + "hyprgraphics": "hyprgraphics", + "hyprland-guiutils": "hyprland-guiutils", + "hyprland-protocols": "hyprland-protocols", + "hyprlang": "hyprlang", + "hyprutils": "hyprutils", + "hyprwayland-scanner": "hyprwayland-scanner", + "hyprwire": "hyprwire", + "nixpkgs": "nixpkgs_5", + "pre-commit-hooks": "pre-commit-hooks", + "systems": "systems_3", + "xdph": "xdph" + }, + "locked": { + "lastModified": 1766604420, + "narHash": "sha256-2Kqg1YNtjPGXc1DIzBeESL8hiuUNUn3c3Oimab19Zn8=", + "owner": "hyprwm", + "repo": "Hyprland", + "rev": "25250527793eb04bb60f103abe7f06370b9f6e1c", + "type": "github" + }, + "original": { + "owner": "hyprwm", + "repo": "Hyprland", + "rev": "25250527793eb04bb60f103abe7f06370b9f6e1c", + "type": "github" + } + }, + "hyprland-guiutils": { + "inputs": { + "aquamarine": [ + "hyprland-git", + "aquamarine" + ], + "hyprgraphics": [ + "hyprland-git", + "hyprgraphics" + ], + "hyprlang": [ + "hyprland-git", + "hyprlang" + ], + "hyprtoolkit": "hyprtoolkit", + "hyprutils": [ + "hyprland-git", + "hyprutils" + ], + "hyprwayland-scanner": [ + "hyprland-git", + "hyprwayland-scanner" + ], + "nixpkgs": [ + "hyprland-git", + "nixpkgs" + ], + "systems": [ + "hyprland-git", + "systems" + ] + }, + "locked": { + "lastModified": 1765643131, + "narHash": "sha256-CCGohW5EBIRy4B7vTyBMqPgsNcaNenVad/wszfddET0=", + "owner": "hyprwm", + "repo": "hyprland-guiutils", + "rev": "e50ae912813bdfa8372d62daf454f48d6df02297", + "type": "github" + }, + "original": { + "owner": "hyprwm", + "repo": "hyprland-guiutils", + "type": "github" + } + }, + "hyprland-plugins": { + "inputs": { + "hyprland": [ + "hyprland-git" + ], + "nixpkgs": [ + "hyprland-plugins", + "hyprland", + "nixpkgs" + ], + "systems": [ + "hyprland-plugins", + "hyprland", + "systems" + ] + }, + "locked": { + "lastModified": 1770899531, + "narHash": "sha256-UBrWjh0DR8db60aLNkTnZTJ9F4kWK0Y7rUDNJC88W7A=", + "owner": "hyprwm", + "repo": "hyprland-plugins", + "rev": "e03c34ccd51280a44ea6d1f5c040cd81ecca25ed", + "type": "github" + }, + "original": { + "owner": "hyprwm", + "repo": "hyprland-plugins", + "type": "github" + } + }, + "hyprland-protocols": { + "inputs": { + "nixpkgs": [ + "hyprland-git", + "nixpkgs" + ], + "systems": [ + "hyprland-git", + "systems" + ] + }, + "locked": { + "lastModified": 1765214753, + "narHash": "sha256-P9zdGXOzToJJgu5sVjv7oeOGPIIwrd9hAUAP3PsmBBs=", + "owner": "hyprwm", + "repo": "hyprland-protocols", + "rev": "3f3860b869014c00e8b9e0528c7b4ddc335c21ab", + "type": "github" + }, + "original": { + "owner": "hyprwm", + "repo": "hyprland-protocols", + "type": "github" + } + }, + "hyprlang": { + "inputs": { + "hyprutils": [ + "hyprland-git", + "hyprutils" + ], + "nixpkgs": [ + "hyprland-git", + "nixpkgs" + ], + "systems": [ + "hyprland-git", + "systems" + ] + }, + "locked": { + "lastModified": 1764612430, + "narHash": "sha256-54ltTSbI6W+qYGMchAgCR6QnC1kOdKXN6X6pJhOWxFg=", + "owner": "hyprwm", + "repo": "hyprlang", + "rev": "0d00dc118981531aa731150b6ea551ef037acddd", + "type": "github" + }, + "original": { + "owner": "hyprwm", + "repo": "hyprlang", + "type": "github" + } + }, + "hyprtoolkit": { + "inputs": { + "aquamarine": [ + "hyprland-git", + "hyprland-guiutils", + "aquamarine" + ], + "hyprgraphics": [ + "hyprland-git", + "hyprland-guiutils", + "hyprgraphics" + ], + "hyprlang": [ + "hyprland-git", + "hyprland-guiutils", + "hyprlang" + ], + "hyprutils": [ + "hyprland-git", + "hyprland-guiutils", + "hyprutils" + ], + "hyprwayland-scanner": [ + "hyprland-git", + "hyprland-guiutils", + "hyprwayland-scanner" + ], + "nixpkgs": [ + "hyprland-git", + "hyprland-guiutils", + "nixpkgs" + ], + "systems": [ + "hyprland-git", + "hyprland-guiutils", + "systems" + ] + }, + "locked": { + "lastModified": 1764592794, + "narHash": "sha256-7CcO+wbTJ1L1NBQHierHzheQGPWwkIQug/w+fhTAVuU=", + "owner": "hyprwm", + "repo": "hyprtoolkit", + "rev": "5cfe0743f0e608e1462972303778d8a0859ee63e", + "type": "github" + }, + "original": { + "owner": "hyprwm", + "repo": "hyprtoolkit", + "type": "github" + } + }, + "hyprutils": { + "inputs": { + "nixpkgs": [ + "hyprland-git", + "nixpkgs" + ], + "systems": [ + "hyprland-git", + "systems" + ] + }, + "locked": { + "lastModified": 1766160771, + "narHash": "sha256-roINUGikWRqqgKrD4iotKbGj3ZKJl3hjMz5l/SyKrHw=", + "owner": "hyprwm", + "repo": "hyprutils", + "rev": "5ac060bfcf2f12b3a6381156ebbc13826a05b09f", + "type": "github" + }, + "original": { + "owner": "hyprwm", + "repo": "hyprutils", + "type": "github" + } + }, + "hyprwayland-scanner": { + "inputs": { + "nixpkgs": [ + "hyprland-git", + "nixpkgs" + ], + "systems": [ + "hyprland-git", + "systems" + ] + }, + "locked": { + "lastModified": 1763640274, + "narHash": "sha256-Uan1Nl9i4TF/kyFoHnTq1bd/rsWh4GAK/9/jDqLbY5A=", + "owner": "hyprwm", + "repo": "hyprwayland-scanner", + "rev": "f6cf414ca0e16a4d30198fd670ec86df3c89f671", + "type": "github" + }, + "original": { + "owner": "hyprwm", + "repo": "hyprwayland-scanner", + "type": "github" + } + }, + "hyprwire": { + "inputs": { + "hyprutils": [ + "hyprland-git", + "hyprutils" + ], + "nixpkgs": [ + "hyprland-git", + "nixpkgs" + ], + "systems": [ + "hyprland-git", + "systems" + ] + }, + "locked": { + "lastModified": 1766253200, + "narHash": "sha256-26qPwrd3od+xoYVywSB7hC2cz9ivN46VPLlrsXyGxvE=", + "owner": "hyprwm", + "repo": "hyprwire", + "rev": "1079777525b30a947c8d657fac158e00ae85de9d", + "type": "github" + }, + "original": { + "owner": "hyprwm", + "repo": "hyprwire", + "type": "github" + } + }, + "iamb": { + "inputs": { + "crane": "crane", + "fenix": "fenix", + "flake-utils": "flake-utils", + "nixpkgs": "nixpkgs_6" + }, + "locked": { + "lastModified": 1768868561, + "narHash": "sha256-nvEOtV1Y5K9E1Lj+bPnQ6k1AneDM9OT3RbV3Urm/1Qs=", + "owner": "ulyssa", + "repo": "iamb", + "rev": "93fc47d019cd6a9d56f163aa6ba819ef1fd309d6", + "type": "github" + }, + "original": { + "owner": "ulyssa", + "repo": "iamb", + "type": "github" + } + }, + "incbin-src": { + "flake": false, + "locked": { + "lastModified": 1748303270, + "narHash": "sha256-vgOfViZnWTKpBB6vDNDJSB3YuuGGVhg++zsi9Ubatno=", + "owner": "graphitemaster", + "repo": "incbin", + "rev": "22061f51fe9f2f35f061f85c2b217b55dd75310d", + "type": "github" + }, + "original": { + "owner": "graphitemaster", + "repo": "incbin", + "rev": "22061f51fe9f2f35f061f85c2b217b55dd75310d", + "type": "github" + } + }, + "json-src": { + "flake": false, + "locked": { + "lastModified": 1744360948, + "narHash": "sha256-cECvDOLxgX7Q9R3IE86Hj9JJUxraDQvhoyPDF03B2CY=", + "owner": "nlohmann", + "repo": "json", + "rev": "55f93686c01528224f448c19128836e7df245f72", + "type": "github" + }, + "original": { + "owner": "nlohmann", + "ref": "v3.12.0", + "repo": "json", + "type": "github" + } + }, + "libgit2-src": { + "flake": false, + "locked": { + "lastModified": 1749227175, + "narHash": "sha256-/xI3v7LNhpgfjv/m+sZwYDhhYvS6kQYxiiiG3+EF8Mw=", + "owner": "libgit2", + "repo": "libgit2", + "rev": "0060d9cf5666f015b1067129bd874c6cc4c9c7ac", + "type": "github" + }, + "original": { + "owner": "libgit2", + "ref": "v1.9.1", + "repo": "libgit2", + "type": "github" + } + }, + "luajit-src": { + "flake": false, + "locked": { + "lastModified": 1763177035, + "narHash": "sha256-oYD86MqmlJpiCuEs4LwVtxvarPtz1RPWm8nJqNE0sBs=", + "owner": "SteamClientHomebrew", + "repo": "LuaJIT", + "rev": "89550023569c3e195e75e12951c067fe5591e0d2", + "type": "github" + }, + "original": { + "owner": "SteamClientHomebrew", + "ref": "v2.1", + "repo": "LuaJIT", + "type": "github" + } + }, + "luajson-src": { + "flake": false, + "locked": { + "lastModified": 1763065879, + "narHash": "sha256-5Mdp4jp+rqz2ufkBa1gMfd8nep+Um+mBdr6+Ut6yz9I=", + "owner": "SteamClientHomebrew", + "repo": "LuaJSON", + "rev": "0c1fabf07c42f3907287d1e4f729e0620c1fe6fd", + "type": "github" + }, + "original": { + "owner": "SteamClientHomebrew", + "repo": "LuaJSON", + "rev": "0c1fabf07c42f3907287d1e4f729e0620c1fe6fd", + "type": "github" + } + }, + "millennium": { + "inputs": { + "abseil-src": "abseil-src", + "asio-src": "asio-src", + "curl-src": "curl-src", + "fmt-src": "fmt-src", + "incbin-src": "incbin-src", + "json-src": "json-src", + "libgit2-src": "libgit2-src", + "luajit-src": "luajit-src", + "luajson-src": "luajson-src", + "millennium-src": "millennium-src", + "minhook-src": "minhook-src", + "mini-src": "mini-src", + "minizip-src": "minizip-src", + "nixpkgs": "nixpkgs_7", + "re2-src": "re2-src", + "websocketpp-src": "websocketpp-src", + "zlib-src": "zlib-src" + }, + "locked": { + "dir": "packages/nix", + "lastModified": 1770489586, + "narHash": "sha256-JMN7T1ZrQ7PjSsgKobxtEENHiBAxqHNNIAaJcPnCeHM=", + "owner": "trivaris", + "repo": "millennium", + "rev": "19656df9f9c8dfa0b7c6a4d2d25073b78efc4eda", + "type": "github" + }, + "original": { + "dir": "packages/nix", + "owner": "trivaris", + "repo": "millennium", + "type": "github" + } + }, + "millennium-src": { + "flake": false, + "locked": { + "lastModified": 1770463863, + "narHash": "sha256-MceGTpXobCAh5Ll/1iTWcEf6/nHY3Ll1t06JxbYc+Co=", + "owner": "SteamClientHomebrew", + "repo": "Millennium", + "rev": "1bc62c94a06f25f7e8d7e269f11cd968cf576bff", + "type": "github" + }, + "original": { + "owner": "SteamClientHomebrew", + "repo": "Millennium", + "rev": "1bc62c94a06f25f7e8d7e269f11cd968cf576bff", + "type": "github" + } + }, + "minhook-src": { + "flake": false, + "locked": { + "lastModified": 1743163800, + "narHash": "sha256-0eGFfg365bb4zic1WTHMvKHbxuhhGp72/clu8OklHXs=", + "owner": "TsudaKageyu", + "repo": "minhook", + "rev": "c3fcafdc10146beb5919319d0683e44e3c30d537", + "type": "github" + }, + "original": { + "owner": "TsudaKageyu", + "ref": "v1.3.4", + "repo": "minhook", + "type": "github" + } + }, + "mini-src": { + "flake": false, + "locked": { + "lastModified": 1743356736, + "narHash": "sha256-zBFFOlECbie7+62fTGf+NP4gNmfv2Qddw3ys6xn7o9U=", + "owner": "metayeti", + "repo": "mINI", + "rev": "52b66e987cb56171dc91d96115cdf094b6e4d7a0", + "type": "github" + }, + "original": { + "owner": "metayeti", + "ref": "0.9.18", + "repo": "mINI", + "type": "github" + } + }, + "minizip-src": { + "flake": false, + "locked": { + "lastModified": 1746408966, + "narHash": "sha256-I3CZwtfJMsZYQOMdGhooUN8vssnQj6rCzv8F+rne3vg=", + "owner": "zlib-ng", + "repo": "minizip-ng", + "rev": "f3ed731e27a97e30dffe076ed5e0537daae5c1bd", + "type": "github" + }, + "original": { + "owner": "zlib-ng", + "ref": "4.0.10", + "repo": "minizip-ng", + "type": "github" + } + }, + "nix-alien": { + "inputs": { + "flake-compat": "flake-compat_5", + "nix-index-database": "nix-index-database", + "nixpkgs": "nixpkgs_8" + }, + "locked": { + "lastModified": 1768904356, + "narHash": "sha256-TIG8J+Or8nOydy8TztvtIshnprlf1q6XDIJnopLtMlA=", + "owner": "thiagokokada", + "repo": "nix-alien", + "rev": "d95b25a4dd6da2a1dfeaaf66163d0a281a8270e9", + "type": "github" + }, + "original": { + "owner": "thiagokokada", + "repo": "nix-alien", + "type": "github" + } + }, + "nix-github-actions": { + "inputs": { + "nixpkgs": [ + "cerulean", + "nt", + "nix-unit", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1737420293, + "narHash": "sha256-F1G5ifvqTpJq7fdkT34e/Jy9VCyzd5XfJ9TO8fHhJWE=", + "owner": "nix-community", + "repo": "nix-github-actions", + "rev": "f4158fa080ef4503c8f4c820967d946c2af31ec9", + "type": "github" + }, + "original": { + "owner": "nix-community", + "repo": "nix-github-actions", + "type": "github" + } + }, + "nix-index-database": { + "inputs": { + "nixpkgs": [ + "nix-alien", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1765267181, + "narHash": "sha256-d3NBA9zEtBu2JFMnTBqWj7Tmi7R5OikoU2ycrdhQEws=", + "owner": "nix-community", + "repo": "nix-index-database", + "rev": "82befcf7dc77c909b0f2a09f5da910ec95c5b78f", + "type": "github" + }, + "original": { + "owner": "nix-community", + "repo": "nix-index-database", + "type": "github" + } + }, + "nix-unit": { + "inputs": { + "flake-parts": "flake-parts_2", + "nix-github-actions": "nix-github-actions", + "nixpkgs": [ + "cerulean", + "nt", + "nixpkgs" + ], + "treefmt-nix": "treefmt-nix" + }, + "locked": { + "lastModified": 1762774186, + "narHash": "sha256-hRADkHjNt41+JUHw2EiSkMaL4owL83g5ZppjYUdF/Dc=", + "owner": "nix-community", + "repo": "nix-unit", + "rev": "1c9ab50554eed0b768f9e5b6f646d63c9673f0f7", + "type": "github" + }, + "original": { + "owner": "nix-community", + "repo": "nix-unit", + "type": "github" + } + }, + "nixcats": { + "locked": { + "lastModified": 1770584904, + "narHash": "sha256-9Zaz8lbKF2W9pwXZEnbiGsicHdBoU+dHt3Wv3mCJoZ8=", + "owner": "BirdeeHub", + "repo": "nixCats-nvim", + "rev": "538fdde784d2909700d97a8ef307783b33a86fb1", + "type": "github" + }, + "original": { + "owner": "BirdeeHub", + "repo": "nixCats-nvim", + "type": "github" + } + }, + "nixcord": { + "inputs": { + "flake-compat": "flake-compat_6", + "flake-parts": "flake-parts_3", + "nixpkgs": "nixpkgs_9" + }, + "locked": { + "lastModified": 1770365342, + "narHash": "sha256-jV5tAs67HSBWz/ePEp1eyoUK3Lqfc1fEAvt2wC6reFc=", + "owner": "FlameFlag", + "repo": "nixcord", + "rev": "51db830336715209a4a213aa985f4d405ff0be69", + "type": "github" + }, + "original": { + "owner": "FlameFlag", + "repo": "nixcord", + "type": "github" + } + }, + "nixpkgs": { + "locked": { + "lastModified": 1763934636, + "narHash": "sha256-9glbI7f1uU+yzQCq5LwLgdZqx6svOhZWkd4JRY265fc=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "ee09932cedcef15aaf476f9343d1dea2cb77e261", + "type": "github" + }, + "original": { + "owner": "nixos", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-lib": { + "locked": { + "lastModified": 1769909678, + "narHash": "sha256-cBEymOf4/o3FD5AZnzC3J9hLbiZ+QDT/KDuyHXVJOpM=", + "owner": "nix-community", + "repo": "nixpkgs.lib", + "rev": "72716169fe93074c333e8d0173151350670b824c", + "type": "github" + }, + "original": { + "owner": "nix-community", + "repo": "nixpkgs.lib", + "type": "github" + } + }, + "nixpkgs-lib_2": { + "locked": { + "lastModified": 1761114652, + "narHash": "sha256-f/QCJM/YhrV/lavyCVz8iU3rlZun6d+dAiC3H+CDle4=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "01f116e4df6a15f4ccdffb1bcd41096869fb385c", + "type": "github" + }, + "original": { + "owner": "nix-community", + "repo": "nixpkgs.lib", + "type": "github" + } + }, + "nixpkgs-unstable": { + "locked": { + "lastModified": 1770914792, + "narHash": "sha256-QpCRgIbupASO9adsg2kFNNUnOIQq0vJ9g6HCxlOA7v8=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "3b285f04c85ceacf7a53cfa21b2f5cb60a2d06e2", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "staging-next", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_10": { + "locked": { + "lastModified": 1770562336, + "narHash": "sha256-ub1gpAONMFsT/GU2hV6ZWJjur8rJ6kKxdm9IlCT0j84=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "d6c71932130818840fc8fe9509cf50be8c64634f", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_11": { + "locked": { + "lastModified": 1770197578, + "narHash": "sha256-AYqlWrX09+HvGs8zM6ebZ1pwUqjkfpnv8mewYwAo+iM=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "00c21e4c93d963c50d4c0c89bfa84ed6e0694df2", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_12": { + "locked": { + "lastModified": 1769461804, + "narHash": "sha256-msG8SU5WsBUfVVa/9RPLaymvi5bI8edTavbIq3vRlhI=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "bfc1b8a4574108ceef22f02bafcf6611380c100d", + "type": "github" + }, + "original": { + "owner": "nixos", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_2": { + "locked": { + "lastModified": 1770818322, + "narHash": "sha256-tttCN+yrhM7svQW6DqtS3JV9POrRJAaS/e0xuUHBTEM=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "d9ca3a4b73f19ea147c9d977d3dde8f612ac648f", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-unstable-small", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_3": { + "locked": { + "lastModified": 1743014863, + "narHash": "sha256-jAIUqsiN2r3hCuHji80U7NNEafpIMBXiwKlSrjWMlpg=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "bd3bac8bfb542dbde7ffffb6987a1a1f9d41699f", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_4": { + "locked": { + "lastModified": 1767313136, + "narHash": "sha256-16KkgfdYqjaeRGBaYsNrhPRRENs0qzkQVUooNHtoy2w=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "ac62194c3917d5f474c1a844b6fd6da2db95077d", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-25.05", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_5": { + "locked": { + "lastModified": 1766070988, + "narHash": "sha256-G/WVghka6c4bAzMhTwT2vjLccg/awmHkdKSd2JrycLc=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "c6245e83d836d0433170a16eb185cefe0572f8b8", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_6": { + "locked": { + "lastModified": 1760284886, + "narHash": "sha256-TK9Kr0BYBQ/1P5kAsnNQhmWWKgmZXwUQr4ZMjCzWf2c=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "cf3f5c4def3c7b5f1fc012b3d839575dbe552d43", + "type": "github" + }, + "original": { + "owner": "nixos", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_7": { + "locked": { + "lastModified": 1770115704, + "narHash": "sha256-KHFT9UWOF2yRPlAnSXQJh6uVcgNcWlFqqiAZ7OVlHNc=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "e6eae2ee2110f3d31110d5c222cd395303343b08", + "type": "github" + }, + "original": { + "owner": "nixos", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_8": { + "locked": { + "lastModified": 1768305791, + "narHash": "sha256-AIdl6WAn9aymeaH/NvBj0H9qM+XuAuYbGMZaP0zcXAQ=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "1412caf7bf9e660f2f962917c14b1ea1c3bc695e", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_9": { + "locked": { + "lastModified": 1770770419, + "narHash": "sha256-iKZMkr6Cm9JzWlRYW/VPoL0A9jVKtZYiU4zSrVeetIs=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "6c5e707c6b5339359a9a9e215c5e66d6d802fd7a", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-25.11", + "repo": "nixpkgs", + "type": "github" + } + }, + "nt": { + "inputs": { + "nix-unit": "nix-unit", + "nixpkgs": "nixpkgs_4", + "systems": "systems_2" + }, + "locked": { + "lastModified": 1770911021, + "narHash": "sha256-8FcXBu0CjeeZeq3uW2h/c5AV+hqELuyPiHsUogOSmZM=", + "owner": "emilelcb", + "repo": "nt", + "rev": "471e1617e8cc0bc749712a7a6af2b2e9f988ffbf", + "type": "github" + }, + "original": { + "owner": "emilelcb", + "repo": "nt", + "type": "github" + } + }, + "pre-commit-hooks": { + "inputs": { + "flake-compat": "flake-compat_4", + "gitignore": "gitignore", + "nixpkgs": [ + "hyprland-git", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1765911976, + "narHash": "sha256-t3T/xm8zstHRLx+pIHxVpQTiySbKqcQbK+r+01XVKc0=", + "owner": "cachix", + "repo": "git-hooks.nix", + "rev": "b68b780b69702a090c8bb1b973bab13756cc7a27", + "type": "github" + }, + "original": { + "owner": "cachix", + "repo": "git-hooks.nix", + "type": "github" + } + }, + "re2-src": { + "flake": false, + "locked": { + "lastModified": 1762353507, + "narHash": "sha256-0J1HVk+eR7VN0ymucW9dNlT36j16XIfCzcs1EVyEIEU=", + "owner": "google", + "repo": "re2", + "rev": "927f5d53caf8111721e734cf24724686bb745f55", + "type": "github" + }, + "original": { + "owner": "google", + "ref": "2025-11-05", + "repo": "re2", + "type": "github" + } + }, + "root": { + "inputs": { + "awww": "awww", + "cachyos": "cachyos", + "cerulean": "cerulean", + "home-manager": "home-manager", + "hyprland-git": "hyprland-git", + "hyprland-plugins": "hyprland-plugins", + "iamb": "iamb", + "millennium": "millennium", + "nix-alien": "nix-alien", + "nixcats": "nixcats", + "nixcord": "nixcord", + "nixpkgs": "nixpkgs_10", + "nixpkgs-unstable": "nixpkgs-unstable", + "sddm-silent": "sddm-silent", + "spicetify-nix": "spicetify-nix", + "systems": "systems_6", + "zen": "zen" + } + }, + "rust-analyzer-src": { + "flake": false, + "locked": { + "lastModified": 1760457219, + "narHash": "sha256-WJOUGx42hrhmvvYcGkwea+BcJuQJLcns849OnewQqX4=", + "owner": "rust-lang", + "repo": "rust-analyzer", + "rev": "8747cf81540bd1bbbab9ee2702f12c33aa887b46", + "type": "github" + }, + "original": { + "owner": "rust-lang", + "ref": "nightly", + "repo": "rust-analyzer", + "type": "github" + } + }, + "rust-overlay": { + "inputs": { + "nixpkgs": [ + "awww", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1764038373, + "narHash": "sha256-M6w2wNBRelcavoDAyFL2iO4NeWknD40ASkH1S3C0YGM=", + "owner": "oxalica", + "repo": "rust-overlay", + "rev": "ab3536fe850211a96673c6ffb2cb88aab8071cc9", + "type": "github" + }, + "original": { + "owner": "oxalica", + "repo": "rust-overlay", + "type": "github" + } + }, + "sddm-silent": { + "inputs": { + "nixpkgs": [ + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1769900466, + "narHash": "sha256-WeoJBj/PhqFCCJEIycTipqPbKm5BpQT2uzFTYcYZ30I=", + "owner": "uiriansan", + "repo": "SilentSDDM", + "rev": "a44caf771b4cb72f5c2514f7d488455b0fa860d2", + "type": "github" + }, + "original": { + "owner": "uiriansan", + "repo": "SilentSDDM", + "type": "github" + } + }, + "spicetify-nix": { + "inputs": { + "nixpkgs": "nixpkgs_11", + "systems": "systems_5" + }, + "locked": { + "lastModified": 1770846656, + "narHash": "sha256-wdYpo8++TqKp3GdRgLFykjuIVW1m9GlUnxID2FG74cE=", + "owner": "Gerg-L", + "repo": "spicetify-nix", + "rev": "40e65cfc4608402674e1efaac3fccce20d2a72d3", + "type": "github" + }, + "original": { + "owner": "Gerg-L", + "repo": "spicetify-nix", + "type": "github" + } + }, + "systems": { + "locked": { + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "type": "github" + }, + "original": { + "owner": "nix-systems", + "repo": "default", + "type": "github" + } + }, + "systems_2": { + "locked": { + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "type": "github" + }, + "original": { + "owner": "nix-systems", + "repo": "default", + "type": "github" + } + }, + "systems_3": { + "locked": { + "lastModified": 1689347949, + "narHash": "sha256-12tWmuL2zgBgZkdoB6qXZsgJEH9LR3oUgpaQq2RbI80=", + "owner": "nix-systems", + "repo": "default-linux", + "rev": "31732fcf5e8fea42e59c2488ad31a0e651500f68", + "type": "github" + }, + "original": { + "owner": "nix-systems", + "repo": "default-linux", + "type": "github" + } + }, + "systems_4": { + "locked": { + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "type": "github" + }, + "original": { + "owner": "nix-systems", + "repo": "default", + "type": "github" + } + }, + "systems_5": { + "locked": { + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "type": "github" + }, + "original": { + "owner": "nix-systems", + "repo": "default", + "type": "github" + } + }, + "systems_6": { + "locked": { + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "type": "github" + }, + "original": { + "owner": "nix-systems", + "repo": "default", + "type": "github" + } + }, + "treefmt-nix": { + "inputs": { + "nixpkgs": [ + "cerulean", + "nt", + "nix-unit", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1762410071, + "narHash": "sha256-aF5fvoZeoXNPxT0bejFUBXeUjXfHLSL7g+mjR/p5TEg=", + "owner": "numtide", + "repo": "treefmt-nix", + "rev": "97a30861b13c3731a84e09405414398fbf3e109f", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "treefmt-nix", + "type": "github" + } + }, + "utils": { + "inputs": { + "systems": "systems" + }, + "locked": { + "lastModified": 1731533236, + "narHash": "sha256-l0KFg5HjrsfsO/JpG+r7fRrqm12kzFHyUHqHCVpMMbI=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "11707dc2f618dd54ca8739b309ec4fc024de578b", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "websocketpp-src": { + "flake": false, + "locked": { + "lastModified": 1587320717, + "narHash": "sha256-9fIwouthv2GcmBe/UPvV7Xn9P2o0Kmn2hCI4jCh0hPM=", + "owner": "zaphoyd", + "repo": "websocketpp", + "rev": "56123c87598f8b1dd471be83ca841ceae07f95ba", + "type": "github" + }, + "original": { + "owner": "zaphoyd", + "ref": "0.8.2", + "repo": "websocketpp", + "type": "github" + } + }, + "xdph": { + "inputs": { + "hyprland-protocols": [ + "hyprland-git", + "hyprland-protocols" + ], + "hyprlang": [ + "hyprland-git", + "hyprlang" + ], + "hyprutils": [ + "hyprland-git", + "hyprutils" + ], + "hyprwayland-scanner": [ + "hyprland-git", + "hyprwayland-scanner" + ], + "nixpkgs": [ + "hyprland-git", + "nixpkgs" + ], + "systems": [ + "hyprland-git", + "systems" + ] + }, + "locked": { + "lastModified": 1761431178, + "narHash": "sha256-xzjC1CV3+wpUQKNF+GnadnkeGUCJX+vgaWIZsnz9tzI=", + "owner": "hyprwm", + "repo": "xdg-desktop-portal-hyprland", + "rev": "4b8801228ff958d028f588f0c2b911dbf32297f9", + "type": "github" + }, + "original": { + "owner": "hyprwm", + "repo": "xdg-desktop-portal-hyprland", + "type": "github" + } + }, + "zen": { + "inputs": { + "home-manager": "home-manager_2", + "nixpkgs": "nixpkgs_12" + }, + "locked": { + "lastModified": 1770910552, + "narHash": "sha256-iJ9c0ZewfRRYUflaEOj43n5TWaB6Ezygn2UA/ZHGQJA=", + "owner": "0xc000022070", + "repo": "zen-browser-flake", + "rev": "15656b755cf2e75bd3e67ded6c7709bc09262c27", + "type": "github" + }, + "original": { + "owner": "0xc000022070", + "repo": "zen-browser-flake", + "type": "github" + } + }, + "zlib-src": { + "flake": false, + "locked": { + "lastModified": 1754565515, + "narHash": "sha256-c2RYqHi3hj/ViBzJcYWoNib27GAbq/B1SJUfvG7CPG4=", + "owner": "zlib-ng", + "repo": "zlib-ng", + "rev": "425439062b114a0f6cf625022c41d929c7e879f9", + "type": "github" + }, + "original": { + "owner": "zlib-ng", + "ref": "2.2.5", + "repo": "zlib-ng", + "type": "github" + } + } + }, + "root": "root", + "version": 7 +} diff --git a/flake.nix b/flake.nix new file mode 100644 index 0000000..4184706 --- /dev/null +++ b/flake.nix @@ -0,0 +1,92 @@ +{ + description = "main nixos flake :3"; + + inputs = { + systems.url = "github:nix-systems/default"; + + # WARNING: don't remove duplicate!! (cry64 will fix) + nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable"; + nixpkgs-unstable.url = "github:NixOS/nixpkgs/staging-next"; + + home-manager = { + url = "github:nix-community/home-manager/master"; + inputs.nixpkgs.follows = "nixpkgs"; + }; + + cerulean = { + url = "github:emilelcb/Cerulean"; + inputs = { + systems.follows = "systems"; + nixpkgs.follows = "nixpkgs"; + nixpkgs-unstable.follows = "nixpkgs-unstable"; + }; + }; + + cachyos.url = "github:xddxdd/nix-cachyos-kernel"; + + nix-alien = { + # silly alien :3 + url = "github:thiagokokada/nix-alien"; + # inputs.nixpkgs.follows = "nixpkgs"; + }; + + # wm/de/apps/theming flakes + hyprland-git = { + url = "github:hyprwm/Hyprland/25250527793eb04bb60f103abe7f06370b9f6e1c"; + #url = "github:hyprwm/Hyprland"; + }; + hyprland-plugins = { + url = "github:hyprwm/hyprland-plugins"; + inputs.hyprland.follows = "hyprland-git"; + }; + + nixcats.url = "github:BirdeeHub/nixCats-nvim"; + awww.url = "git+https://codeberg.org/LGFae/awww"; + zen.url = "github:0xc000022070/zen-browser-flake"; + iamb.url = "github:ulyssa/iamb"; + spicetify-nix.url = "github:Gerg-L/spicetify-nix"; + nixcord.url = "github:FlameFlag/nixcord"; + millennium.url = "github:trivaris/millennium?dir=packages/nix"; + + # temp theme until i bother creating my own box { + margin: 0px 12px; +} + +tooltip { + background: @colorbg; + color: @colorfg; + opacity: 0.9; + padding: 4px; + border-radius: 12px; + border: 1px solid @color01; +} +tooltip label { + background: rgba(0, 0, 0, 0); + color: @colorfg; +} + +#clock, +#memory, +#network, +#workspaces, +#taskbar, +#cpu, +#pulseaudio, +#privacy, +#tray, +#custom-media { + background: @colorbg; + color: @colorfg; + opacity: 0.9; + padding: 4px 16px; + border-radius: 32px; + border: 1px solid @color01; +} + +/* +left-side modules +*/ +#workspaces, +#taskbar, +#custom-media { + margin: 4px 4px 4px 0px; +} + +/* +center modules +*/ +#clock { + margin: 4px 0px 4px 0px; +} + +/* +right-side modules +*/ +#memory, +#network, +#cpu, +#pulseaudio, +#tray, +#privacy { + margin: 4px 0px 4px 4px; +} + +#workspaces, +#taskbar { + padding: 0px; +} + +#taskbar.empty { + opacity: 0; + padding: 0px; + margin: 0px; + border: none; +} +#tray.empty { + opacity: 0; + padding: 0; + margin: 0; + border: none; +} + +/* + connects the workspace and taskbar together :3 +*/ +/* +#workspaces { + margin: 4px 0px 4px 12px; + padding: 0px 8px 0px 0px; + border-radius: 100px 0px 0px 100px; + border-width: 1px 0px 1px 1px; +} +#taskbar { + margin: 4px 0px 4px 0px; + padding: 0px 0px 0px 8px; + border-radius: 0px 100px 100px 0px; +} +*/ + +#cpu { + margin: 4px 0 4px 0; + border-radius: 32px 0px 0px 32px; +} +#memory { + margin: 4px 0 4px 0; + border-radius: 0px; + border-width: 1px 0px 1px 0px; +} +#network { + margin: 4px 0 4px 0; + border-radius: 0px 32px 32px 0px; +} + +#workspaces button { + padding: 2px 4px; + border-radius: 32px; + color: @colorfg; +} +#workspaces button:hover { + background: @colorfg; + color: @colorbg; + opacity: 0.8; +} +#workspaces button.active { + background: @colorfg; + color: @colorbg; +} + +#taskbar button { + padding: 2px 4px; + border-radius: 32px; + color: @colorfg; +} +#taskbar button:hover { + background: @colorfg; + color: @colorbg; + opacity: 0.8; +} +#taskbar button.active { + background: @colorfg; + color: @colorbg; +} +/* + icons in each button on the taskbar to correct + for them not being properly centred sometimes :3 +*/ +#taskbar button box image { + padding-left: 2px; +} diff --git a/homes/modules/de/waybar/waybar.nix b/homes/modules/de/waybar/waybar.nix new file mode 100644 index 0000000..7859d4e --- /dev/null +++ b/homes/modules/de/waybar/waybar.nix @@ -0,0 +1,104 @@ +{ config, inputs, lib, pkgs, ... }: +let + unstable = inputs.nixpkgs-unstable.legacyPackages.${pkgs.stdenv.hostPlatform.system}; +in +{ + programs.waybar = { + enable = true; + settings = { + mainBar = { + layer = "top"; + position = "top"; + height = 20; + modules-left = [ "hyprland/workspaces" "wlr/taskbar" "custom/media" ]; + modules-center = [ "clock" ]; + modules-right = [ "cpu" "memory" "network" "pulseaudio" "privacy" "tray" ]; + + # left + "hyprland/workspaces" = { + format = "{id}"; + }; + "wlr/taskbar" = { + format = "{icon}"; + icon-size = 12; + }; + "custom/media" = { + exec = "auroramedia"; + return-type = "json"; + escape = true; + restart-interval = 1; + }; + + # center + "clock" = { + format = "{:%Y %b %a %d %H:%M:%S}"; + interval = 1; + tooltip = false; + }; + + # right + "cpu" = { + format = " {usage}%"; + interval = 1; + }; + "memory" = { + format = " {used:0.1f} / {total:0.1f} GiB"; + interval = 1; + }; + "network" = { + format = "{bandwidthUpBytes}  {bandwidthDownBytes}  {ifname}"; + format-wifi = " {bandwidthUpBytes}  {bandwidthDownBytes} "; + format-ethernet = "󰈀 {bandwidthUpBytes}  {bandwidthDownBytes} "; + format-disconnected = "no internet ~ rawr! ~ x3"; # empty format hides module + interval = 1; + max-length = 32; + }; + "pulseaudio" = { + format = "{icon} {volume}%"; + format-muted = " {volume}%"; + format-icons = { + default = [ + "" + "" + "" + ]; + }; + "scroll-step" = 5; + }; + "privacy" = { + icon-size = 12; + icon-spacing = 5; + transition-duration = 200; + modules = [ + { + type = "screenshare"; + tooltip = true; + tooltip-icon-size = 12; + } + { + type = "audio-in"; + tooltip = true; + tooltip-icon-size = 12; + } + ]; + }; + "tray" = { + icon-size = 12; + spacing = 10; + # fixes spotify not showing up when "close button should minimize the Spotify window" is false + show-passive-items = true; + }; + + # i only enable this for debugging of window rules lol + "hyprland/window" = { + format = "{class} | {title}"; + }; + }; + }; + + style = pkgs.writeTextFile { + name = "waybar-style.css"; + text = builtins.readFile ./style.css; + }; + }; +} diff --git a/homes/modules/programs/iamb/config.toml b/homes/modules/programs/iamb/config.toml new file mode 100644 index 0000000..1577437 --- /dev/null +++ b/homes/modules/programs/iamb/config.toml @@ -0,0 +1,10 @@ +[profiles.auroraveon-matrix] +user_id = "@auroraveon:matrix.org" +url = "https://matrix.org" + +[settings.notifications] +enabled = true +show_message = false + +[image_preview] +protocol.type = "kitty" diff --git a/homes/modules/programs/iamb/iamb.nix b/homes/modules/programs/iamb/iamb.nix new file mode 100644 index 0000000..ab84c56 --- /dev/null +++ b/homes/modules/programs/iamb/iamb.nix @@ -0,0 +1,13 @@ +{ config, inputs, lib, pkgs, ... }: +let + unstable = inputs.nixpkgs-unstable.legacyPackages.${pkgs.stdenv.hostPlatform.system}; +in +{ + home.packages = with pkgs; [ + inputs.iamb.packages."${stdenv.hostPlatform.system}".default + ]; + + xdg.configFile."iamb/config.toml" = { + source = ./config.toml; + }; +} diff --git a/homes/modules/programs/neovim/init.lua b/homes/modules/programs/neovim/init.lua new file mode 100644 index 0000000..b46afbe --- /dev/null +++ b/homes/modules/programs/neovim/init.lua @@ -0,0 +1,69 @@ +vim.g.mapleader = " " + +vim.opt.termguicolors = true -- use terminal colors +vim.opt.relativenumber = true +vim.opt.wrap = false +vim.opt.colorcolumn = "80" + +require("plugins") +require("lsp") + +local uv = vim.loop +local colorscheme_filepath = "/home/aurora/.cache/nvim/neovim-colors" +local colors = {} + +-- function to load colors +local function load_colors() + local new_colors = {} + for line in io.lines(colorscheme_filepath) do + table.insert(new_colors, line) + end + + -- ensure the table has enough entries to avoid indexing issues + if #new_colors >= 18 then + colors = new_colors + require('base16-colorscheme').setup({ + base00 = colors[17], base01 = colors[1], base02 = colors[3], base03 = colors[3], + base04 = colors[5], base05 = colors[8], base06 = colors[5], base07 = colors[8], + base08 = colors[18], base09 = colors[4], base0A = colors[11], base0B = colors[5], + base0C = colors[6], base0D = colors[7], base0E = colors[6], base0F = colors[16], + }) + + -- set colors for blink.cmp's completion menu + vim.api.nvim_set_hl(0, 'BlinkCmpMenu', { bg = colors[17] }) + vim.api.nvim_set_hl(0, 'BlinkCmpMenuBorder', { bg = colors[17], fg = colors[13] }) + vim.api.nvim_set_hl(0, 'BlinkCmpMenuSelection', { bg = colors[15], fg = colors[17] }) + vim.api.nvim_set_hl(0, 'BlinkCmpScrollBarThumb', { bg = colors[18] }) + vim.api.nvim_set_hl(0, 'BlinkCmpKind', { bg = colors[17], fg = colors[14] }) + vim.api.nvim_set_hl(0, 'BlinkCmpLabel', { bg = colors[17], fg = colors[18] }) + vim.api.nvim_set_hl(0, 'BlinkCmpLabelMatch', { bg = colors[17], fg = colors[18] }) + vim.api.nvim_set_hl(0, 'BlinkCmpLabelDetail', { bg = colors[17], fg = colors[18] }) + vim.api.nvim_set_hl(0, 'BlinkCmpLabelDescription', { bg = colors[17], fg = colors[18] }) + else + print("Error: Not enough colors in file") + end +end + +-- initial load +load_colors() + +-- vim.defer_fn(load_colors, 1) + +-- set up a file watcher +local function watch_colorscheme() + local handle + handle = uv.new_fs_event() + if handle then + uv.fs_event_start(handle, colorscheme_filepath, {}, function(err, _, _) + if err then + print("Error watching colorscheme file:", err) + return + end + -- debounce by adding a slight delay before reloading + vim.defer_fn(load_colors, 100) + end) + end +end + +watch_colorscheme() + diff --git a/homes/modules/programs/neovim/lua/lsp/capabilities.lua b/homes/modules/programs/neovim/lua/lsp/capabilities.lua new file mode 100644 index 0000000..9256965 --- /dev/null +++ b/homes/modules/programs/neovim/lua/lsp/capabilities.lua @@ -0,0 +1,59 @@ +local M = {} + +function M.on_attach(_, bufnr) + -- we create a function that lets us more easily define mappings specific + -- for LSP related items. It sets the mode, buffer and description for us each time. + + local nmap = function(keys, func, desc) + if desc then + desc = 'LSP: ' .. desc + end + + vim.keymap.set('n', keys, func, { buffer = bufnr, desc = desc }) + end + + nmap('rn', vim.lsp.buf.rename, '[R]e[n]ame') + nmap('ca', vim.lsp.buf.code_action, '[C]ode [A]ction') + + nmap('gd', vim.lsp.buf.definition, '[G]oto [D]efinition') + + -- NOTE: why are these functions that call the telescope builtin? + -- because otherwise they would load telescope eagerly when this is defined. + -- due to us using the on_require handler to make sure it is available. + if nixCats('general.telescope') then + nmap('gr', function() require('telescope.builtin').lsp_references() end, '[G]oto [R]eferences') + nmap('gI', function() require('telescope.builtin').lsp_implementations() end, '[G]oto [I]mplementation') + nmap('ds', function() require('telescope.builtin').lsp_document_symbols() end, '[D]ocument [S]ymbols') + nmap('ws', function() require('telescope.builtin').lsp_dynamic_workspace_symbols() end, '[W]orkspace [S]ymbols') + nmap('dd', "Telescope diagnostics bufnr=0", '[D]ocument [D]iagnostics') + nmap('wd', "Telescope diagnostics", '[W]orkspace [D]iagnostics') + end -- TODO: someone who knows the builtin versions of these to do instead help me out please. + + nmap('D', vim.lsp.buf.type_definition, 'Type [D]efinition') + nmap('e', vim.diagnostic.open_float, 'Show [E]rror') + + -- See `:help K` for why this keymap + nmap('K', vim.lsp.buf.hover, 'Hover Documentation') + nmap('', vim.lsp.buf.signature_help, 'Signature Documentation') + + -- Lesser used LSP functionality + nmap('gD', vim.lsp.buf.declaration, '[G]oto [D]eclaration') + nmap('wa', vim.lsp.buf.add_workspace_folder, '[W]orkspace [A]dd Folder') + nmap('wr', vim.lsp.buf.remove_workspace_folder, '[W]orkspace [R]emove Folder') + nmap('wl', function() + print(vim.inspect(vim.lsp.buf.list_workspace_folders())) + end, '[W]orkspace [L]ist Folders') + + -- Create a command `:Format` local to the LSP buffer + vim.api.nvim_buf_create_user_command(bufnr, 'Format', function(_) + vim.lsp.buf.format() + end, { desc = 'Format current buffer with LSP' }) + +end + +function M.get(server_name) + local capabilities = require('blink.cmp').get_lsp_capabilities() + + return capabilities +end +return M diff --git a/homes/modules/programs/neovim/lua/lsp/completion.lua b/homes/modules/programs/neovim/lua/lsp/completion.lua new file mode 100644 index 0000000..cdbc9db --- /dev/null +++ b/homes/modules/programs/neovim/lua/lsp/completion.lua @@ -0,0 +1,88 @@ +return { + { + "friendly-snippets", + dep_of = { "blink.cmp" }, + }, + { + "blink.cmp", + event = { "InsertEnter", "CmdlineEnter" }, + on_require = "blink", + load = function (name) + vim.cmd.packadd(name) + end, + after = function(plugin) + local blink = require('blink.cmp') + + blink.setup({ + keymap = { + preset = 'default', + }, + + appearance = { + nerd_font_variant = 'mono', + }, + + sources = { + default = { 'lsp', 'path', 'snippets', 'buffer' }, + providers = { + lsp = { + name = 'LSP', + module = 'blink.cmp.sources.lsp', + enabled = true, + }, + path = { + name = 'Path', + module = 'blink.cmp.sources.path', + enabled = true, + }, + snippets = { + name = 'Snippets', + module = 'blink.cmp.sources.snippets', + enabled = true, + }, + buffer = { + name = 'Buffer', + module = 'blink.cmp.sources.buffer', + enabled = true, + }, + }, + }, + + completion = { + accept = { + auto_brackets = { + enabled = true, + }, + }, + + menu = { + border = 'rounded', + max_height = 12, + scrolloff = 2, + + draw = { + columns = { + { "kind_icon", gap = 1, }, + { "label", "label_description", gap = 1, }, + }, + }, + }, + + documentation = { + auto_show = false, + window = { + border = 'rounded', + }, + }, + }, + + signature = { + enabled = true, + window = { + border = 'rounded', + }, + }, + }) + end + }, +} diff --git a/homes/modules/programs/neovim/lua/lsp/completion.lua.old b/homes/modules/programs/neovim/lua/lsp/completion.lua.old new file mode 100644 index 0000000..f40853f --- /dev/null +++ b/homes/modules/programs/neovim/lua/lsp/completion.lua.old @@ -0,0 +1,203 @@ +---packadd + after/plugin +---@type fun(names: string[]|string) +local load_w_after_plugin = require('nixCatsUtils.lzUtils').make_load_with_after({ "plugin" }) + +-- NOTE: packadd doesnt load after directories. +-- hence, the above function that you can get from luaUtils that exists to make that easy. + +return { + { + "cmp-buffer", + on_plugin = { "nvim-cmp" }, + load = load_w_after_plugin, + }, + { + "cmp-cmdline", + on_plugin = { "nvim-cmp" }, + load = load_w_after_plugin, + }, + { + "cmp-cmdline-history", + on_plugin = { "nvim-cmp" }, + load = load_w_after_plugin, + }, + { + "cmp-nvim-lsp", + on_plugin = { "nvim-cmp" }, + dep_of = { "nvim-lspconfig" }, + load = load_w_after_plugin, + }, + { + "cmp-nvim-lsp-signature-help", + on_plugin = { "nvim-cmp" }, + load = load_w_after_plugin, + }, + { + "cmp-nvim-lua", + on_plugin = { "nvim-cmp" }, + load = load_w_after_plugin, + }, + { + "cmp-path", + on_plugin = { "nvim-cmp" }, + load = load_w_after_plugin, + }, + { + "cmp_luasnip", + on_plugin = { "nvim-cmp" }, + load = load_w_after_plugin, + }, + { + "friendly-snippets", + dep_of = { "nvim-cmp" }, + load = load_w_after_plugin, + }, + { + "lspkind.nvim", + dep_of = { "nvim-cmp" }, + load = load_w_after_plugin, + }, + { + "luasnip", + dep_of = { "nvim-cmp" }, + after = function (plugin) + local luasnip = require 'luasnip' + require('luasnip.loaders.from_vscode').lazy_load() + luasnip.config.setup {} + + local ls = require('luasnip') + + vim.keymap.set({ "i", "s" }, "", function() + if ls.choice_active() then + ls.change_choice(1) + end + end) + end, + }, + { + "nvim-cmp", + -- cmd = { "" }, + event = { "DeferredUIEnter" }, + on_require = { "cmp" }, + -- ft = "", + -- keys = "", + -- colorscheme = "", + after = function (plugin) + -- [[ Configure nvim-cmp ]] + -- See `:help cmp` + local cmp = require 'cmp' + local luasnip = require 'luasnip' + local lspkind = require 'lspkind' + + cmp.setup { + formatting = { + format = lspkind.cmp_format { + mode = 'text', + with_text = true, + maxwidth = 50, -- prevent the popup from showing more than provided characters (e.g 50 will not show more than 50 characters) + ellipsis_char = '...', -- when popup menu exceed maxwidth, the truncated part would show ellipsis_char instead (must define maxwidth first) + + menu = { + buffer = '[BUF]', + nvim_lsp = '[LSP]', + nvim_lsp_signature_help = '[LSP]', + nvim_lsp_document_symbol = '[LSP]', + nvim_lua = '[API]', + path = '[PATH]', + luasnip = '[SNIP]', + }, + }, + }, + snippet = { + expand = function(args) + luasnip.lsp_expand(args.body) + end, + }, + mapping = cmp.mapping.preset.insert { + [''] = cmp.mapping.scroll_docs(-4), + [''] = cmp.mapping.scroll_docs(4), + [''] = cmp.mapping.complete {}, + [''] = cmp.mapping.confirm { + behavior = cmp.ConfirmBehavior.Replace, + select = true, + }, + [''] = cmp.mapping(function(fallback) + if cmp.visible() then + cmp.select_next_item() + elseif luasnip.expand_or_locally_jumpable() then + luasnip.expand_or_jump() + else + fallback() + end + end, { 'i', 's' }), + [''] = cmp.mapping(function(fallback) + if cmp.visible() then + cmp.select_prev_item() + elseif luasnip.locally_jumpable(-1) then + luasnip.jump(-1) + else + fallback() + end + end, { 'i', 's' }), + }, + + sources = cmp.config.sources { + -- The insertion order influences the priority of the sources + { name = 'nvim_lsp'--[[ , keyword_length = 3 ]] }, + { name = 'nvim_lsp_signature_help'--[[ , keyword_length = 3 ]]}, + { name = 'path' }, + { name = 'luasnip' }, + { name = 'buffer' }, + }, + enabled = function() + return vim.bo[0].buftype ~= 'prompt' + end, + experimental = { + native_menu = false, + ghost_text = false, + }, + } + + cmp.setup.filetype('lua', { + sources = cmp.config.sources { + { name = 'nvim_lua' }, + { name = 'nvim_lsp'--[[ , keyword_length = 3 ]]}, + { name = 'nvim_lsp_signature_help'--[[ , keyword_length = 3 ]]}, + { name = 'path' }, + { name = 'luasnip' }, + { name = 'buffer' }, + },{ + { + name = 'cmdline', + option = { + ignore_cmds = { 'Man', '!' }, + }, + }, + }, + }) + + -- Use buffer source for `/` and `?` (if you enabled `native_menu`, this won't work anymore). + cmp.setup.cmdline({ '/', '?' }, { + mapping = cmp.mapping.preset.cmdline(), + sources = { + { name = 'nvim_lsp_document_symbol'--[[ , keyword_length = 3 ]]}, + { name = 'buffer' }, + { name = 'cmdline_history' }, + }, + view = { + entries = { name = 'wildmenu', separator = '|' }, + }, + }) + + -- Use cmdline & path source for ':' (if you enabled `native_menu`, this won't work anymore). + cmp.setup.cmdline(':', { + mapping = cmp.mapping.preset.cmdline(), + sources = cmp.config.sources { + { name = 'cmdline' }, + -- { name = 'cmdline_history' }, + { name = 'path' }, + }, + }) + end, + }, +} diff --git a/homes/modules/programs/neovim/lua/lsp/init.lua b/homes/modules/programs/neovim/lua/lsp/init.lua new file mode 100644 index 0000000..1fae8a8 --- /dev/null +++ b/homes/modules/programs/neovim/lua/lsp/init.lua @@ -0,0 +1,5 @@ +require("lze").load { + { import = "lsp.completion", }, +} + +require("lsp.lsp") diff --git a/homes/modules/programs/neovim/lua/lsp/lsp.lua b/homes/modules/programs/neovim/lua/lsp/lsp.lua new file mode 100644 index 0000000..6548bf3 --- /dev/null +++ b/homes/modules/programs/neovim/lua/lsp/lsp.lua @@ -0,0 +1,123 @@ +local servers = {} + +servers.lua_ls = { + settings = { + Lua = { + formatters = { + ignoreComments = false, + }, + signatureHelp = { enable = true }, + diagnostics = { + globals = { 'nixCats', 'vim' }, + -- disable = { 'missing-fields' }, + }, + workspace = { + -- make the server aware of the neovim runtime files + library = vim.api.nvim_get_runtime_file("", true), + checkThirdParty = false, + }, + }, + telemetry = { enabled = false }, + }, +} + +local rust_analyzer_cmd = os.getenv("RUST_ANALYZER_CMD") +servers.rust_analyzer = { + cmd = { rust_analyzer_cmd }, + settings = { + server = { + -- For debugging rust-analyzer, to see log location do :LspInfo in neovim + -- extraEnv = { {["RA_LOG"]="project_model=debug"} }, + }, + cargo = { + allFeatures = false, + allTargets = false, + buildScripts = { enable = true }, + target = "x86_64-unknown-linux-gnu", + }, + diagnostics = { + enable = true, + }, + }, +} + +servers.zls = { + settings = {}, +} + +local elixir_ls_cmd = os.getenv("ELIXIR_LS_CMD") +servers.elixirls = { + cmd = { elixir_ls_cmd }, + settings = {}, +} + +servers.gleam = { + settings = {}, +} + +local java_home = os.getenv("JAVA_HOME") +servers.jdtls = { + settings = { + java = { + contentProvider = { preferred = 'fernflower' }, + configuration = { + runtimes = { + { + name = "OpenJDK 17", + path = os.getenv("OPENJDK_17"), + }, + { + name = "OpenJDK 21", + path = os.getenv("OPENJDK_21"), + }, + } + } + }, + } +} + +-- Taken from nixCats example: +-- If you were to comment out this autocommand +-- and instead pass the on attach function directly to +-- nvim-lspconfig, it would do the same thing. +-- come to think of it, it might be better because then lspconfig doesnt have to be called before lsp attach? +-- but you would still end up triggering on a FileType event anyway, so, it makes little difference. +vim.api.nvim_create_autocmd('LspAttach', { + group = vim.api.nvim_create_augroup('nixCats-lsp-attach', { clear = true }), + callback = function(event) + require('lsp.capabilities').on_attach(vim.lsp.get_client_by_id(event.data.client_id), event.buf) + end +}) + +require("lze").load { + { + "nvim-lspconfig", + event = "FileType", + after = function(plugin) + -- Just register configs, don't enable yet + for server_name, cfg in pairs(servers) do + vim.lsp.config(server_name, { + capabilities = require('lsp.capabilities').get(server_name), + settings = (cfg or {}).settings, + filetypes = (cfg or {}).filetypes, + cmd = (cfg or {}).cmd, + root_pattern = (cfg or {}).root_pattern, + }) + end + + -- Enable on-demand per filetype + for server_name, cfg in pairs(servers) do + local filetypes = cfg.filetypes or vim.lsp.config[server_name].filetypes + if filetypes then + vim.api.nvim_create_autocmd('FileType', { + pattern = filetypes, + callback = function() + vim.lsp.enable(server_name) + end, + }) + end + end + end, + }, +} + diff --git a/homes/modules/programs/neovim/lua/nixCatsUtils/lzUtils.lua b/homes/modules/programs/neovim/lua/nixCatsUtils/lzUtils.lua new file mode 100644 index 0000000..0667276 --- /dev/null +++ b/homes/modules/programs/neovim/lua/nixCatsUtils/lzUtils.lua @@ -0,0 +1,135 @@ +--[[ + This directory is the luaUtils template. + You can choose what things from it that you would like to use. + And then delete the rest. + Everything in this directory is optional. +--]] + +local M = {} +-- NOTE: This file contains 2 utilities for making good use of lze and lz.n with nixCats +-- The function for loading after directories is useful for both plugins, and also for lazy loading without a plugin, +-- but the custom handler will only work with lze. +-- If you dont use these plugins, you probably don't need this file. + +---This function is useful for sourcing the after directories of lazily loaded plugins +---because vim.cmd.packadd does not do this for you. +--- +---This might be useful when doing lazy loading the vanilla way +---as well as when using plugins like lz.n for lazy loading +---It is primarily useful for lazily loading nvim-cmp sources, +---as they often rely on the after directory to work +--- +---Recieves the names of directories from a plugin's after directory +---that you wish to source files from. +---Will return a load function that can take a name, or list of names, +---and will load a plugin and its after directories. +---The function returned is a suitable substitute for the load field of a plugin spec. +--- +---Only makes sense for plugins added via optionalPlugins +---or some other opt directory on your packpath +--- +---e.g. in the following example: +---load_with_after_plugin will load the plugin names it is given, and their after/plugin dir +--- +---local load_with_after_plugin = require('nixCatsUtils').make_load_with_after({ 'plugin' }) +---load_with_after_plugin('some_plugin') +---@overload fun(dirs: string[]|string): fun(names: string|string[]) +---It also optionally recieves a function that should load a plugin and return its path +---for if the plugin is not on the packpath, or return nil +---to load from the packpath or nixCats list as normal +---@overload fun(dirs: string[]|string, load: fun(name: string):string|nil): fun(names: string|string[]) +function M.make_load_with_after(dirs, load) + dirs = (type(dirs) == "table" and dirs) or { dirs } + local fromPackpath = function(name) + for _, packpath in ipairs(vim.opt.packpath:get()) do + local plugin_path = vim.fn.globpath(packpath, "pack/*/opt/" .. name, nil, true, true) + if plugin_path[1] then + return plugin_path[1] + end + end + return nil + end + ---@param plugin_names string[]|string + return function(plugin_names) + local names = type(plugin_names) == "table" and plugin_names or { plugin_names } + local to_source = {} + for _, name in ipairs(names) do + if type(name) == "string" then + local path = (type(load) == "function" and load(name)) or nil + if type(path) == "string" then + table.insert(to_source, { name = name, path = path }) + else + local ok, err = pcall(vim.cmd.packadd, name) + if ok then + table.insert(to_source, { name = name, path = nil }) + else + vim.notify( + '"packadd ' + .. name + .. '" failed, and path provided by custom load function (if provided) was not a string\n' + .. err, + vim.log.levels.WARN, + { title = "nixCatsUtils.load_with_after" } + ) + end + end + else + vim.notify( + "plugin name was not a string and was instead of value:\n" .. vim.inspect(name), + vim.log.levels.WARN, + { title = "nixCatsUtils.load_with_after" } + ) + end + end + for _, info in pairs(to_source) do + local plugpath = info.path or vim.tbl_get(package.loaded, "nixCats", "pawsible", "allPlugins", "opt", info.name) or fromPackpath(info.name) + if type(plugpath) == "string" then + local afterpath = plugpath .. "/after" + for _, dir in ipairs(dirs) do + if vim.fn.isdirectory(afterpath) == 1 then + local plugin_dir = afterpath .. "/" .. dir + if vim.fn.isdirectory(plugin_dir) == 1 then + local files = vim.fn.glob(plugin_dir .. "/*", false, true) + for _, file in ipairs(files) do + if vim.fn.filereadable(file) == 1 then + vim.cmd("source " .. file) + end + end + end + end + end + end + end + end +end + +-- A nixCats specific lze handler that you can use to conditionally enable by category easier. +-- at the start of your config, register with +-- require('lze').register_handlers(require('nixCatsUtils.lzUtils').for_cat) +-- before any calls to require('lze').load using the handler have been made. +-- accepts: +-- for_cat = { "your" "cat" }; for_cat = { cat = { "your" "cat" }, default = bool } +-- for_cat = "your.cat"; for_cat = { cat = "your.cat", default = bool } +-- where default is an alternate value for when nixCats was NOT used to install the config +M.for_cat = { + spec_field = "for_cat", + set_lazy = false, + modify = function(plugin) + if type(plugin.for_cat) == "table" then + if plugin.for_cat.cat ~= nil then + if vim.g[ [[nixCats-special-rtp-entry-nixCats]] ] ~= nil then + plugin.enabled = (nixCats(plugin.for_cat.cat) and true) or false + else + plugin.enabled = nixCats(plugin.for_cat.default) + end + else + plugin.enabled = (nixCats(plugin.for_cat) and true) or false + end + else + plugin.enabled = (nixCats(plugin.for_cat) and true) or false + end + return plugin + end, +} + +return M diff --git a/homes/modules/programs/neovim/lua/plugins/dressing.lua b/homes/modules/programs/neovim/lua/plugins/dressing.lua new file mode 100644 index 0000000..bca1775 --- /dev/null +++ b/homes/modules/programs/neovim/lua/plugins/dressing.lua @@ -0,0 +1,5 @@ +return { + { + "dressing.nvim" + }, +} diff --git a/homes/modules/programs/neovim/lua/plugins/fyler.lua b/homes/modules/programs/neovim/lua/plugins/fyler.lua new file mode 100644 index 0000000..dd2bdab --- /dev/null +++ b/homes/modules/programs/neovim/lua/plugins/fyler.lua @@ -0,0 +1,15 @@ +return { + { + "fyler.nvim", + cmd = { "Fyler" }, + keys = { + { "tf", function() return require('fyler').toggle({ kind = "split_right" }) end, mode = {"n"}, desc = 'Open [F]yler' }, + }, + load = function (name) + vim.cmd.packadd(name) + end, + after = function(plugin) + local fyler = require("fyler").setup() + end, + }, +} diff --git a/homes/modules/programs/neovim/lua/plugins/init.lua b/homes/modules/programs/neovim/lua/plugins/init.lua new file mode 100644 index 0000000..20c38db --- /dev/null +++ b/homes/modules/programs/neovim/lua/plugins/init.lua @@ -0,0 +1,8 @@ +require("lze").load { + { import = "plugins.dressing", }, + { import = "plugins.telescope", }, + { import = "plugins.treesitter", }, + { import = "plugins.fyler", }, + { import = "plugins.mini-hipatterns", }, + --{ import = "plugins.neocord", }, +} diff --git a/homes/modules/programs/neovim/lua/plugins/mini-hipatterns.lua b/homes/modules/programs/neovim/lua/plugins/mini-hipatterns.lua new file mode 100644 index 0000000..a7c6c2a --- /dev/null +++ b/homes/modules/programs/neovim/lua/plugins/mini-hipatterns.lua @@ -0,0 +1,76 @@ +return { + { + "mini.hipatterns", + after = function(plugin) + local hipatterns = require("mini.hipatterns") + + -- Returns hex color group for matching short hex color. + -- + ---@param match string + ---@return string + local hex_color_short = function(_, match) + local style = 'fg' -- 'fg' or 'bg', for extmark_opts_inline use 'fg' + local r, g, b = match:sub(2, 2), match:sub(3, 3), match:sub(4, 4) + local hex = string.format('#%s%s%s%s%s%s', r, r, g, g, b, b) + return hipatterns.compute_hex_color_group(hex, style) + end + + -- Returns hex color group for matching alpha hex color. + -- + ---@param match string + ---@return string + local hex_color_alpha = function(_, match) + local style = 'fg' -- 'fg' or 'bg', for extmark_opts_inline use 'fg' + local r, g, b = match:sub(2, 3), match:sub(4, 5), match:sub(6, 7) + local hex = string.format('#%s%s%s', r, g, b) + return hipatterns.compute_hex_color_group(hex, style) + end + + -- Returns extmark opts for highlights with virtual inline text. + -- + ---@param data table Includes `hl_group`, `full_match` and more. + ---@return table + local extmark_opts_inline = function(_, _, data) + return { + virt_text = { { '󰧞', data.hl_group } }, + virt_text_pos = 'inline', + right_gravity = false, + } + end + + -- Returns extmark opts for highlights with virtual inline text. + -- + ---@param data table Includes `hl_group`, `full_match` and more. + ---@return table + local extmark_opts_inline_alpha = function(_, _, data) + return { + virt_text = { { '󱡓', data.hl_group } }, + virt_text_pos = 'inline', + right_gravity = false, + } + end + + hipatterns.setup({ + highlighters = { + -- #rrggbb + hex_color = hipatterns.gen_highlighter.hex_color({ + style = "inline", + inline_text = '󰧞', + }), + -- #rgb + hex_color_short = { + pattern = "#%x%x%x%f[%X]", + group = hex_color_short, + extmark_opts = extmark_opts_inline, + }, + -- #rrggbbaa + hex_color_alpha = { + pattern = "#%x%x%x%x%x%x%x%x%f[%X]", + group = hex_color_alpha, + extmark_opts = extmark_opts_inline_alpha, + }, + }, + }) + end, + }, +} diff --git a/homes/modules/programs/neovim/lua/plugins/neocord.lua b/homes/modules/programs/neovim/lua/plugins/neocord.lua new file mode 100644 index 0000000..5efb242 --- /dev/null +++ b/homes/modules/programs/neovim/lua/plugins/neocord.lua @@ -0,0 +1,5 @@ +return { + { + "neocord", + }, +} diff --git a/homes/modules/programs/neovim/lua/plugins/telescope.lua b/homes/modules/programs/neovim/lua/plugins/telescope.lua new file mode 100644 index 0000000..919f3bd --- /dev/null +++ b/homes/modules/programs/neovim/lua/plugins/telescope.lua @@ -0,0 +1,36 @@ +return { + { + "telescope.nvim", + cmd = { "Telescope" }, + keys = { + { "f", function() return require('telescope.builtin').find_files() end, mode = {"n"}, desc = 'Telescope search [F]iles' }, + { "tr", function() return require('telescope.builtin').oldfiles() end, mode = {"n"}, desc = '[T]elescope search [R]ecent files' }, + { "ts", function() return require('telescope.builtin').live_grep() end, mode = {"n"}, desc = '[T]elescope [S]earch cwd with grep' }, + { "tw", function() return require('telescope.builtin').grep_string() end, mode = {"n"}, desc = '[T]elescope search current [W]ord' }, + { "tk", function() return require('telescope.builtin').keymaps() end, mode = {"n"}, desc = '[T]elescope search [K]eymaps' }, + { "tb", function() return require('telescope.builtin').buffers() end, mode = {"n"}, desc = '[T]elescope search [B]uffers' }, + }, + load = function (name) + vim.cmd.packadd(name) + vim.cmd.packadd("telescope-fzf-native.nvim") + end, + after = function(plugin) + local telescope = require("telescope") + local actions = require("telescope.actions") + + telescope.setup { + defaults = { + mappings = { + i = { + [""] = actions.move_selection_previous, -- move to prev result + [""] = actions.move_selection_next, -- move to next result + [""] = actions.send_selected_to_qflist + actions.open_qflist + } + } + } + } + + pcall(telescope.load_extension, "fzf") + end, + }, +} diff --git a/homes/modules/programs/neovim/lua/plugins/treesitter.lua b/homes/modules/programs/neovim/lua/plugins/treesitter.lua new file mode 100644 index 0000000..489ecf9 --- /dev/null +++ b/homes/modules/programs/neovim/lua/plugins/treesitter.lua @@ -0,0 +1,95 @@ +-- to help me write this after nvim-treesitter updated, i used: +-- https://github.com/BirdeeHub/nixCats-nvim/blob/3c9bc4d7123e1b48d92f25ba505b889af541e897/templates/example/lua/myLuaConf/plugins/treesitter.lua + +return { + { + "nvim-treesitter", + lazy = false, + after = function (plugin) + --@param buf integer + --@param language string + local function treesitter_try_attach(buf, language) + --check if parser exists and load it + if not vim.treesitter.language.add(language) then + return + end + + -- enables syntax highlight and other treesitter features + vim.treesitter.start(buf, language) + + -- enables treesitter based folds + vim.wo.foldexpr = "v:lua.vim.treesitter.foldexpr()" + + -- enables treesiter based indentation + vim.bo.indentexpr = "v:lua.require'nvim-treesitter'.indentexpr()" + end + + local available_parsers = require("nvim-treesitter").get_available() + vim.api.nvim_create_autocmd("FileType", { + callback = function(args) + local buf, filetype = args.buf, args.match + local language = vim.treesitter.language.get_lang(filetype) + if not language then + return + end + + local installed_parsers = require("nvim-treesitter").get_installed("parsers") + + if vim.tbl_contains(installed_parsers, language) then + -- enable the parser if it is installed + treesitter_try_attach(buf, language) + elseif vim.tbl_contains(available_parsers, language) then + -- if a parser is available in `nvim-treesitter` enable it after ensuring it is installed + require("nvim-treesitter").install(language):await(function() + treesitter_try_attach(buf, language) + end) + else + -- try to enable treesitter features in case the parser exists but is not available from `nvim-treesitter` + treesitter_try_attach(buf, language) + end + end, + }) + end, + }, + { + "nvim-treesitter-textobjects", + lazy = false, + before = function(plugin) + vim.g.no_plugin_maps = true + end, + after = function(plugin) + require("nvim-treesitter-textobjects").setup { + select = { + lookahead = true, + selection_modes = { + ['@parameter.outer'] = 'v', -- charwise + ['@function.outer'] = 'V', -- linewise + }, + include_surrounding_whitespace = false, + }, + } + + -- keymaps + vim.keymap.set({ "x", "o" }, "am", function() + require "nvim-treesitter-textobjects.select".select_textobject("@function.outer", "textobjects") + end) + vim.keymap.set({ "x", "o" }, "im", function() + require "nvim-treesitter-textobjects.select".select_textobject("@function.inner", "textobjects") + end) + vim.keymap.set({ "x", "o" }, "ac", function() + require "nvim-treesitter-textobjects.select".select_textobject("@class.outer", "textobjects") + end) + vim.keymap.set({ "x", "o" }, "ic", function() + require "nvim-treesitter-textobjects.select".select_textobject("@class.inner", "textobjects") + end) + -- You can also use captures from other query groups like `locals.scm` + vim.keymap.set({ "x", "o" }, "as", function() + require "nvim-treesitter-textobjects.select".select_textobject("@local.scope", "locals") + end) + + -- NOTE: for more textobjects options, see the following link. + -- This template is using the new `main` branch of the repo. + -- https://github.com/nvim-treesitter/nvim-treesitter-textobjects/tree/main + end, + }, +} diff --git a/homes/modules/programs/neovim/nixcats.nix b/homes/modules/programs/neovim/nixcats.nix new file mode 100644 index 0000000..169b2f8 --- /dev/null +++ b/homes/modules/programs/neovim/nixcats.nix @@ -0,0 +1,213 @@ +{ config, lib, inputs, upkgs, ... }: let + utils = inputs.nixcats.utils; +in { + imports = [ + inputs.nixcats.homeModule + ]; + + config = { + # this value, nixCats is the defaultPackageName you pass to mkNixosModules + # it will be the namespace for your options. + nixCats = { + enable = true; + nixpkgs_version = inputs.nixpkgs; + # this will add the overlays from ./overlays and also, + # add any plugins in inputs named "plugins-pluginName" to pkgs.neovimPlugins + # It will not apply to overall system, just nixCats. + addOverlays = /* (import ./overlays inputs) ++ */ [ + (utils.standardPluginOverlay inputs) + ]; + # see the packageDefinitions below. + # This says which of those to install. + packageNames = [ "auroranvim" ]; + + luaPath = "${./.}"; + + # the .replace vs .merge options are for modules based on existing configurations, + # they refer to how multiple categoryDefinitions get merged together by the module. + # for useage of this section, refer to :h nixCats.flake.outputs.categories + categoryDefinitions.replace = ({ pkgs, settings, categories, extra, name, mkNvimPlugin, ... }@packageDef: { + lspsAndRuntimeDeps = { + general = with pkgs; [ + ripgrep + fd + ]; + treesitter = with pkgs; [ + tree-sitter + ]; + lang = with pkgs; { + lua = [ + lua-language-server + ]; + nix = [ + nil + nix-doc + ]; + rust = with pkgs; [ + cargo + rust-analyzer + ]; + zig = with pkgs; [ + upkgs.zls # FIX: using upkgs version as zls is broken rn ;-; + ]; + elixir = with pkgs; [ + elixir-ls + ]; + gleam = with pkgs; [ + gleam + ]; + java = with pkgs; [ + jdt-language-server + javaPackages.compiler.openjdk17 + javaPackages.compiler.openjdk21 + ]; + }; + }; + + startupPlugins = { + general = with pkgs.vimPlugins; [ + lze + plenary-nvim + nvim-notify + nvim-web-devicons + base16-nvim + mini-nvim + ]; + treesitter = with pkgs.vimPlugins; [ + nvim-treesitter-textobjects + nvim-treesitter.withAllGrammars + ]; + }; + optionalPlugins = { + general = with pkgs.vimPlugins; [ + ]; + ui = with pkgs.vimPlugins; [ + dressing-nvim + ]; + qol = with pkgs.vimPlugins; [ + undotree + mini-hipatterns + ]; + telescope = with pkgs.vimPlugins; [ + telescope-nvim + telescope-fzf-native-nvim + telescope-ui-select-nvim + ]; + fyler = with pkgs.vimPlugins; [ + fyler-nvim + ]; + lsp = with pkgs.vimPlugins; [ + nvim-lspconfig + ]; + completion = with pkgs.vimPlugins; [ + blink-cmp + nvim-cmp + luasnip + friendly-snippets + cmp_luasnip + cmp-buffer + cmp-path + cmp-nvim-lua + cmp-nvim-lsp + cmp-cmdline + cmp-nvim-lsp-signature-help + cmp-cmdline-history + lspkind-nvim + ]; + lang = with pkgs.vimPlugins; { + java = [ + nvim-jdtls + ]; + }; + discord = with pkgs.vimPlugins; [ + neocord # discord presence plugin :3 + ]; + }; + + # shared libraries to be added to LD_LIBRARY_PATH + # variable available to nvim runtime + sharedLibraries = { + general = with pkgs; [ + # libgit2 + ]; + }; + environmentVariables = { + lang = { + rust = { + # it literally won't see the rust-analyzer provided to it + # if you don't use an envrionment variable to tell it + RUST_ANALYZER_CMD = "${pkgs.rust-analyzer}/bin/rust-analyzer"; + }; + elixir = { + ELIXIR_LS_CMD = "${pkgs.elixir-ls}/scripts/language_server.sh"; + }; + java = { + JAVA_HOME = "${pkgs.javaPackages.compiler.openjdk17}"; + OPENJDK_17 = "${pkgs.javaPackages.compiler.openjdk17}"; + OPENJDK_21 = "${pkgs.javaPackages.compiler.openjdk21}"; + }; + }; + }; + extraWrapperArgs = { + test = [ + '' --set CATTESTVAR2 "It worked again!"'' + ]; + }; + # lists of the functions you would have passed to + # python.withPackages or lua.withPackages + + # get the path to this python environment + # in your lua config via + # vim.g.python3_host_prog + # or run from nvim terminal via :!-python3 + extraPython3Packages = { + test = (_:[]); + }; + # populates $LUA_PATH and $LUA_CPATH + extraLuaPackages = { + test = [ (_:[]) ]; + }; + }); + + # see :help nixCats.flake.outputs.packageDefinitions + packageDefinitions.replace = { + # these are the names of your packages + # you can include as many as you wish. + auroranvim = {pkgs , ... }: { + # they contain a settings set defined above + # see :help nixCats.flake.outputs.settings + settings = { + wrapRc = true; + # IMPORTANT: + # your alias may not conflict with your other packages. + aliases = [ "auroravim" "auravim" "foxyvim" "avix" "fvix" "auim" ]; + }; + # and a set of categories that you want + # (and other information to pass to lua) + categories = { + general = true; + + ui = true; + qol = true; + telescope = true; + fyler = true; + lsp = true; + completion = true; + treesitter = true; + discord = false; + + lang = { + lua = true; + nix = true; + rust = true; + zig = true; + elixir = true; + gleam = true; + java = true; + }; + }; + }; + }; + }; + }; +} diff --git a/homes/modules/programs/nixcord.nix b/homes/modules/programs/nixcord.nix new file mode 100644 index 0000000..d1d9e2b --- /dev/null +++ b/homes/modules/programs/nixcord.nix @@ -0,0 +1,250 @@ +{ config, inputs, lib, pkgs, ... }: +{ + imports = [ + inputs.nixcord.homeModules.nixcord + ]; + + programs.nixcord = { + enable = true; + equibop.enable = true; + + discord = { + vencord.enable = false; + equicord.enable = true; + }; + + config = { + enabledThemes = [ + "aurorastheme.css" + "base16-colors.css" + ]; + plugins = { + anonymiseFileNames = { + enable = true; + anonymiseByDefault = true; + method = 0; + randomisedLength = 16; + }; + betterSessions = { + backgroundCheck = true; + checkInterval = 1; + }; + biggerStreamPreview.enable = true; + callTimer.enable = true; + fixYoutubeEmbeds.enable = true; + fixSpotifyEmbeds.enable = true; + tidalEmbeds.enable = true; + youtubeAdblock.enable = true; + followVoiceUser.enable = true; + friendsSince.enable = true; + ircColors = { + enable = true; + lightness = 80; + memberListColors = true; + applyColorOnlyInDms = false; + applyColorOnlyToUsersWithoutColor = false; + }; + messageLogger = { + enable = true; + showEditDiffs = true; + separatedDiffs = false; + }; + fakeNitro.enable = true; + ghosted.enable = true; + noF1.enable = true; + noMaskedUrlPaste.enable = true; + messageLatency = { + enable = false; + latency = -1; + showMillis = true; + }; + openInApp.enable = true; + crashHandler.enable = true; + disableCallIdle.enable = true; + experiments.enable = true; + expressionCloner.enable = true; + favoriteGifSearch.enable = true; + fixImagesQuality.enable = true; + forceOwnerCrown.enable = true; + forwardAnywhere.enable = true; + spotifyCrack.enable = true; + spotifyShareCommands.enable = true; + spotifyControls.enable = true; + fullUserInChatbox.enable = true; + gifPaste.enable = true; + ignoreActivities = { + enable = true; + ignorePlaying = true; + ignoreStreaming = true; + ignoreListening = true; + ignoreWatching = true; + ignoreCompeting = true; + }; + imageLink.enable = true; + imageZoom.enable = true; + memberCount.enable = true; + noDevtoolsWarning.enable = true; + noUnblockToJump.enable = true; + pauseInvitesForever.enable = true; + permissionsViewer.enable = true; + pictureInPicture = { + enable = true; + loop = true; + }; + platformIndicators.enable = true; + previewMessage.enable = true; + relationshipNotifier.enable = true; + revealAllSpoilers.enable = true; + serverInfo.enable = true; + serverListIndicators.enable = true; + showHiddenChannels.enable = true; + showHiddenThings.enable = true; + showTimeoutDuration = { + enable = true; + displayStyle = "tooltip"; + }; + silentTyping = { + enable = true; + enabledGlobally = false; + }; + startupTimings.enable = true; + typingIndicator.enable = true; + unlockedAvatarZoom = { + enable = true; + zoomMultiplier = 4.0; + }; + userMessagesPronouns.enable = true; + validUser.enable = true; + validReply.enable = true; + viewIcons = { + enable = true; + format = "webp"; + imgSize = "4096"; + }; + voiceChatDoubleClick.enable = true; + voiceDownload.enable = true; + voiceMessages = { + enable = true; + noiseSuppression = false; + echoCancellation = true; + }; + volumeBooster.enable = true; + webKeybinds.enable = true; + webScreenShareFixes.enable = true; + whoReacted.enable = true; + whosWatching.enable = true; + quickReply.enable = true; + questCompleter.enable = true; + shikiCodeblocks = { + enable = true; + useDevIcon = "COLOR"; + theme = "https://raw.githubusercontent.com/shikijs/textmate-grammars-themes/2d87559c7601a928b9f7e0f0dda243d2fb6d4499/packages/tm-themes/themes/kanagawa-wave.json"; + }; + }; + }; + }; + + programs.nixcord.config.plugins.PinDMs = { + enable = true; + canCollapseDmSection = true; + userBasedCategoryList = { + "1202666382760607774" = [ + { + id = "i9dflmraztc"; + name = "🏳️‍⚧️ girlfriends!!! :3 🏳️‍⚧️"; + color = 16359423; + collapsed = false; + channels = [ + "1436964273162289185" + "1436988320474206311" + "1449837047383855119" + "1436965652861685891" + "1436968495190642722" + "1465424321919975454" + ]; + } + { + id = "p2v1f5y9zbd"; + name = "🦋 best frens <3 🦋"; + color = 10223511; + collapsed = false; + channels = [ + "1436985374286155799" + "1436965657076826222" + "1429921297160212681" + "1394808379381387385" + "1433593753183977545" + "1438254055452446881" + "1436966389549236376" + "1202678007026819134" + "1437151552224624660" + "1441906462094921789" + "1450340272079769712" + "1458123717124165764" + "1436975341129306155" + "1461885176534794427" + "1462155159470866443" + "1468735915076878407" + ]; + } + { + id = "c0mg5w635j8"; + name = "🏳️‍🌈 close frens x3 🏳️‍🌈"; + color = 10780927; + collapsed = false; + channels = [ + "1437077103873888290" + "1436975346338762823" + "1437123353101205590" + "1441516692164575283" + "1419557866502754334" + "1436985041203892315" + "1438071327515742229" + ]; + } + { + id = "ghjrq5el3b"; + name = "frens :3"; + color = 7334399; + collapsed = false; + channels = [ + "1437007154132422701" + "1437006448948416526" + "1446781617422209068" + "1444723474835837103" + "1437098569483161721" + "1437237573146771469" + "1436973705421914123" + "1437135359359320125" + "1438010723837022343" + "1440553969461104740" + "1437097082887475201" + "1447222320015085740" + "1462624704027164824" + "1449513783893692589" + "1463737720961634461" + "1463000874392748249" + "1461929299727749145" + "1436984534712451105" + "1436983282582683813" + "1437283420312047659" + "1437089201651847315" + "1468324280445046824" + "1467307140443148288" + ]; + } + { + id = "zbmj00xw7d8"; + name = "goop chats"; + color = 14876549; + collapsed = false; + channels = [ + "1437132769141719040" + "1445549416516681902" + "1458849972815663209" + ]; + } + ]; + }; + }; +} diff --git a/homes/modules/programs/spicetify.nix b/homes/modules/programs/spicetify.nix new file mode 100644 index 0000000..896d0b7 --- /dev/null +++ b/homes/modules/programs/spicetify.nix @@ -0,0 +1,26 @@ +{ inputs, lib, pkgs, ... }: +let + spicetifyPkgs = inputs.spicetify-nix.legacyPackages.${pkgs.stdenv.hostPlatform.system}; +in { + imports = [ inputs.spicetify-nix.homeManagerModules.default ]; + programs.spicetify = { + enable = true; + + enabledExtensions = with spicetifyPkgs.extensions; [ + adblock + shuffle + keyboardShortcut + ({ + src = (pkgs.fetchFromGitHub { + owner = "Spikerko"; + repo = "spicy-lyrics"; + rev = "568c83326aa6aba6ded28c95df6fcfb25cab3648"; + hash = "sha256-lej93EDzGkmyrg5YMdPSqzrxlIfKsfaDBZosTvxoTNw="; + }) + /builds; + name = "spicy-lyrics.mjs"; + }) + ]; + theme = spicetifyPkgs.themes.comfy; + colorScheme = "Sakura"; + }; +} diff --git a/homes/modules/programs/yazi/yazi.nix b/homes/modules/programs/yazi/yazi.nix new file mode 100644 index 0000000..54c26be --- /dev/null +++ b/homes/modules/programs/yazi/yazi.nix @@ -0,0 +1,86 @@ +{ config, inputs, lib, pkgs, ... }: +{ + # optional dependencies can be found here: + # https://yazi-rs.github.io/docs/installation/ + home.packages = with pkgs; [ # dependencies + ripdrag + ]; + + programs.yazi = { + enable = true; + enableZshIntegration = false; # i mod"if"ied the script in my .zshrc + + settings = { + mgr = { + show_hidden = true; + }; + log = { + enabled = false; + }; + }; + + keymap = { + mgr.prepend_keymap = [ + # drag and drop!! + { on = [ "" ]; run = ''shell "ripdrag -x -a \"$@\"" --confirm''; } + # copy hovered file to clipboard + { on = [ "" ]; run = ''shell -- path=%h; echo "file://$path" | wl-copy -t text/uri-list''; } + ]; + }; + + # they changed it to custom colors, i don't like that, so this is the config + # i did like: + # https://github.com/sxyazi/yazi/blob/97d0c6bb23df413f4add8b888071233c912c49a3/yazi-config/preset/theme-dark.toml + theme = { + icon = { + dirs = [ + { name = ".config"; text = ""; fg = "red"; } + { name = ".git"; text = ""; fg = "blue"; } + { name = ".github"; text = ""; fg = "blue"; } + { name = ".npm"; text = ""; fg = "blue"; } + { name = "Desktop"; text = ""; fg = "magenta"; } + { name = "Documents"; text = ""; fg = "magenta"; } + { name = "Downloads"; text = ""; fg = "red"; } + { name = "Library"; text = ""; fg = "magenta"; } + { name = "Movies"; text = ""; fg = "magenta"; } + { name = "Music"; text = ""; fg = "magenta"; } + { name = "Pictures"; text = ""; fg = "magenta"; } + { name = "Public"; text = ""; fg = "magenta"; } + { name = "Videos"; text = ""; fg = "red"; } + ]; + conds = [ + # special files + { "if" = "orphan"; text = ""; } + { "if" = "link"; text = ""; } + { "if" = "block"; text = ""; } + { "if" = "char"; text = ""; } + { "if" = "fifo"; text = ""; } + { "if" = "sock"; text = ""; } + { "if" = "sticky"; text = ""; } + { "if" = "dummy"; text = ""; } + + # fallback + { "if" = "dir"; text = ""; fg = "blue"; } + { "if" = "exec"; text = ""; } + { "if" = "!dir"; text = ""; } + ]; + }; + }; + }; + + # helped me fix it not working: + # https://github.com/hunkyburrito/xdg-desktop-portal-termfilechooser/issues/56 + # also, the portal must be enabled in configuration.nix + # i can't seem to get it working any other way + xdg.configFile."xdg-desktop-portal-termfilechooser/config" = { + force = true; + text = '' + [filechooser] + cmd=${pkgs.xdg-desktop-portal-termfilechooser}/share/xdg-desktop-portal-termfilechooser/yazi-wrapper.sh + default_dir=$HOME + env=TERMCMD='kitty --title filechooser' + open_mode=suggested + save_mode=last + ''; + }; +} diff --git a/homes/modules/scripts/task-manager.sh b/homes/modules/scripts/task-manager.sh new file mode 100755 index 0000000..068eb79 --- /dev/null +++ b/homes/modules/scripts/task-manager.sh @@ -0,0 +1,2 @@ +#!/usr/bin/env bash +pkill -f "kitty --title btop -e btop" || { kitty --title btop -e btop & disown; } diff --git a/homes/modules/services/dunst.nix b/homes/modules/services/dunst.nix new file mode 100644 index 0000000..31c3453 --- /dev/null +++ b/homes/modules/services/dunst.nix @@ -0,0 +1,33 @@ +{ config, inputs, pkgs, ... }: +let + unstable = inputs.nixpkgs-unstable.legacyPackages.${pkgs.stdenv.hostPlatform.system}; +in +{ + home.packages = with pkgs; [ + libnotify + ]; + + services.dunst = { + enable = true; + settings = { + global = { + monitor = "DP-3"; # second monitor + origin = "top-left"; + layer = "top"; # above windows, below fullscreen + offset = "(16, 24)"; + + padding = 4; + gap_size = 4; + frame_width = 2; + + font = "DepartureMono Nerd Font 8"; + + corner_radius = 12; + icon_corner_radius = 12; + + progress_bar = true; + progress_bar_height = 16; + }; + }; + }; +} diff --git a/homes/modules/services/keepassxc/keepassxc.ini b/homes/modules/services/keepassxc/keepassxc.ini new file mode 100644 index 0000000..e9ab2aa --- /dev/null +++ b/homes/modules/services/keepassxc/keepassxc.ini @@ -0,0 +1,12 @@ +[General] +ConfigVersion=2 + +[FdoSecrets] +Enabled=true +ShowNotification=true +ConfirmAccessItem=true +ConfirmDeleteItem=true + +[GUI] +MinimizeToTray=true +ShowTrayIcon=false diff --git a/homes/modules/services/keepassxc/keepassxc.nix b/homes/modules/services/keepassxc/keepassxc.nix new file mode 100644 index 0000000..7fd6e49 --- /dev/null +++ b/homes/modules/services/keepassxc/keepassxc.nix @@ -0,0 +1,23 @@ +{ config, inputs, lib, pkgs, ... }: +{ + home.packages = with pkgs; [ + keepassxc + ]; + + systemd.user.services.keepassxc = { + Unit = { + Description = "KeePassXC password manager"; + After = [ "graphical-session-pre.target" ]; + PartOf = [ "graphical-session.target" ]; + }; + Service = { + Description = "${pkgs.keepassxc}/bin/keepassxc"; + Restart = "on-failure"; + }; + Install.WantedBy = [ "graphical-session.target" ]; + }; + + xdg.configFile."keepassxc/keepassxc.ini" = { + source = ./keepassxc.ini; + }; +} diff --git a/homes/modules/services/pulse/client.conf.template b/homes/modules/services/pulse/client.conf.template new file mode 100644 index 0000000..6a65f11 --- /dev/null +++ b/homes/modules/services/pulse/client.conf.template @@ -0,0 +1 @@ +cookie-file = /run/user/{uid}/pulse/cookie diff --git a/homes/modules/services/pulse/pulse.nix b/homes/modules/services/pulse/pulse.nix new file mode 100644 index 0000000..59d1fa0 --- /dev/null +++ b/homes/modules/services/pulse/pulse.nix @@ -0,0 +1,9 @@ +{ inputs, lib, pkgs, config, osConfig, ... }: +{ + # writes ./client.conf to ~/.config/pulse/client.conf + xdg.configFile."pulse/client.conf".text = builtins.replaceStrings + ["{uid}"] + # make sure ur user id is set!!! + ["${toString osConfig.users.users.${config.home.username}.uid}"] + (builtins.readFile ./client.conf.template); +} diff --git a/homes/modules/services/wireplumber/config/wireplumber.conf.d/50-alsa-config.conf b/homes/modules/services/wireplumber/config/wireplumber.conf.d/50-alsa-config.conf new file mode 100644 index 0000000..e69de29 diff --git a/homes/modules/services/wireplumber/wireplumber.nix b/homes/modules/services/wireplumber/wireplumber.nix new file mode 100644 index 0000000..03e4957 --- /dev/null +++ b/homes/modules/services/wireplumber/wireplumber.nix @@ -0,0 +1,8 @@ +{ inputs, lib, pkgs, config, ... }: +{ + # writes ./config to ~/.config/wireplumber + xdg.configFile."wireplumber" = { + recursive = true; + source = ./config; + }; +} diff --git a/homes/modules/shell/fastfetch/fastfetch.nix b/homes/modules/shell/fastfetch/fastfetch.nix new file mode 100644 index 0000000..987f805 --- /dev/null +++ b/homes/modules/shell/fastfetch/fastfetch.nix @@ -0,0 +1,12 @@ +{ inputs, lib, pkgs, ... }: +{ + home.packages = with pkgs; [ + fastfetch # displays system info! x3 + ]; + + # writes ./themes to ~/.config/fastfetch/themes + xdg.configFile."fastfetch/themes" = { + recursive = true; + source = ./themes; + }; +} diff --git a/homes/modules/shell/fastfetch/themes/laimu.json b/homes/modules/shell/fastfetch/themes/laimu.json new file mode 100644 index 0000000..e69de29 diff --git a/homes/modules/shell/programs.nix b/homes/modules/shell/programs.nix new file mode 100644 index 0000000..b95007d --- /dev/null +++ b/homes/modules/shell/programs.nix @@ -0,0 +1,26 @@ +{ inputs, lib, pkgs, ... }: +{ + programs = { + zoxide = { + enable = true; + enableZshIntegration = true; + options = [ + "--cmd cd" + ]; + }; + + hyfetch = { + enable = true; + settings = { + preset = "genderfae"; + mode = "rgb"; + backend = "fastfetch"; + color_align = { + mode = "vertical"; + }; + auto_detect_light_dark = true; + pride_month_disable = false; + }; + }; + }; +} diff --git a/homes/modules/shell/zellij/zellij.nix b/homes/modules/shell/zellij/zellij.nix new file mode 100644 index 0000000..aa90116 --- /dev/null +++ b/homes/modules/shell/zellij/zellij.nix @@ -0,0 +1,17 @@ +{ inputs, lib, pkgs, ... }: +let + unstable = inputs.nixpkgs-unstable.legacyPackages.${pkgs.stdenv.hostPlatform.system}; +in +{ + # the theme file template for zellij is in wallust + + programs.zellij = { + enable = true; + enableZshIntegration = false; + + extraConfig = '' +theme "test" +show_startup_tips false + ''; + }; +} diff --git a/homes/modules/shell/zsh.nix b/homes/modules/shell/zsh.nix new file mode 100644 index 0000000..675395e --- /dev/null +++ b/homes/modules/shell/zsh.nix @@ -0,0 +1,86 @@ +{ inputs, lib, pkgs, ... }: +let + unstable = inputs.nixpkgs-unstable.legacyPackages.${pkgs.stdenv.hostPlatform.system}; +in +{ + programs.zsh = { + enable = true; + enableCompletion = true; + autosuggestion.enable = true; + syntaxHighlighting.enable = true; + + plugins = [ + { + name = "vi-mode"; + src = pkgs.zsh-vi-mode; + file = "share/zsh-vi-mode/zsh-vi-mode.plugin.zsh"; + } + ]; + + initContent = '' + # yazi wrapper!!! + function yazi() { + local tmp="$(mktemp -p "/run/user/$UID" -t "yazi-cwd.XXXXXX")" cwd + command yazi "$@" --cwd-file="$tmp" + IFS= read -r -d ''' cwd < "$tmp" + [ -n "$cwd" ] && [ "$cwd" != "$PWD" ] && builtin cd -- "$cwd" + rm -f -- "$tmp" + } + + hyfetch # oh i'm so gay!! :3 + ''; + + shellAliases = { + # files and nav stuff + ls = "eza"; + ll = "ls -la"; + lt = "ls --tree"; + llt = "ll --tree"; + + y = "yazi"; + + # cat with wings!!! + cat = "bat"; + + # init github keys + # description: gi = github initialize + sa = "eval \"$(ssh-agent -s)\""; + gh-auv = "ssh-add ~/.ssh/github_auroraveon"; + cb-fox = "ssh-add ~/.ssh/codeberg_foxxyora"; + + # -------------------- + # shorthand nix command aliases + + # open nix develop with preferred shell + # description: nd = nix develop + nd = "nix develop -c $SHELL"; + + # description: cdns = change directory [to] nix settings + cdns = "cd /etc/nixos"; + # cd to /etc/nixos and edit nix config + # description: ns = nix settings + ns = "cdns && sudo -E -s $EDITOR"; + # description: nrs = nix rebuild switch + nrs = "cdns && nh os switch /etc/nixos"; + # upgrades the system + upgrade = "cdns && sudo nix flake update && nh os switch /etc/nixos"; + + # kitty's ssh command (to fix xterm and other stuff qwq) + kssh = "kitty +kitten ssh"; + + # pipes are prettyyyy!!!! :3333 + pipes1 = "pipes.sh -r 1024 -p 8 -f 30"; + pipes2 = "pipes.sh -r 4096 -p 16 -f 100"; + }; + + history = { + size = 16384; + }; + }; + + programs.zsh.oh-my-zsh = { + enable = true; + theme = "agnoster"; + }; +} + diff --git a/homes/modules/themeing/hellwal/hellwal.nix b/homes/modules/themeing/hellwal/hellwal.nix new file mode 100644 index 0000000..4c0d191 --- /dev/null +++ b/homes/modules/themeing/hellwal/hellwal.nix @@ -0,0 +1,20 @@ +{ config, inputs, lib, pkgs, ... }: +let + unstable = inputs.nixpkgs-unstable.legacyPackages.${pkgs.stdenv.hostPlatform.system}; +in +{ + home.packages = with pkgs; [ + hellwal + ]; + + # writes ./wallust.toml to ~/.config/hellwal/wallust.toml + #xdg.configFile."wallust/wallust.toml" = { + #source = ./wallust.toml; + #}; + + # writes ./templates to ~/.config/hellwal/templates + #xdg.configFile."hellwal/templates" = { + #recursive = true; + #source = ./templates; + #}; +} diff --git a/homes/modules/themeing/wallust/templates/aurorashell-template.toml b/homes/modules/themeing/wallust/templates/aurorashell-template.toml new file mode 100644 index 0000000..ca1dded --- /dev/null +++ b/homes/modules/themeing/wallust/templates/aurorashell-template.toml @@ -0,0 +1,18 @@ +background = '{{ background | strip }}' +foreground = '{{ foreground | strip }}' +color00 = '{{ color0 | strip }}' +color01 = '{{ color1 | strip }}' +color02 = '{{ color2 | strip }}' +color03 = '{{ color3 | strip }}' +color04 = '{{ color4 | strip }}' +color05 = '{{ color5 | strip }}' +color06 = '{{ color6 | strip }}' +color07 = '{{ color7 | strip }}' +color08 = '{{ color8 | strip }}' +color09 = '{{ color9 | strip }}' +color10 = '{{ color10 | strip }}' +color11 = '{{ color11 | strip }}' +color12 = '{{ color12 | strip }}' +color13 = '{{ color13 | strip }}' +color14 = '{{ color14 | strip }}' +color15 = '{{ color15 | strip }}' diff --git a/homes/modules/themeing/wallust/templates/discord-template.css b/homes/modules/themeing/wallust/templates/discord-template.css new file mode 100644 index 0000000..b954be0 --- /dev/null +++ b/homes/modules/themeing/wallust/templates/discord-template.css @@ -0,0 +1,20 @@ +:root { + --foreground: {{ foreground }}; + --background: {{ background }}; + --color0: {{ color0 }}; + --color1: {{ color1 }}; + --color2: {{ color2 }}; + --color3: {{ color3 }}; + --color4: {{ color4 }}; + --color5: {{ color5 }}; + --color6: {{ color6 }}; + --color7: {{ color7 }}; + --color8: {{ color8 }}; + --color9: {{ color9 }}; + --color10: {{ color10 }}; + --color11: {{ color11 }}; + --color12: {{ color12 }}; + --color13: {{ color13 }}; + --color14: {{ color14 }}; + --color15: {{ color15 }}; +} diff --git a/homes/modules/themeing/wallust/templates/hyprland-template.conf b/homes/modules/themeing/wallust/templates/hyprland-template.conf new file mode 100644 index 0000000..c7ecd13 --- /dev/null +++ b/homes/modules/themeing/wallust/templates/hyprland-template.conf @@ -0,0 +1,18 @@ +$colorbg = {{ background | rgb }} +$colorfg = {{ foreground | rgb }} +$color00 = {{ color0 | rgb }} +$color01 = {{ color1 | rgb }} +$color02 = {{ color2 | rgb }} +$color03 = {{ color3 | rgb }} +$color04 = {{ color4 | rgb }} +$color05 = {{ color5 | rgb }} +$color06 = {{ color6 | rgb }} +$color07 = {{ color7 | rgb }} +$color08 = {{ color8 | rgb }} +$color09 = {{ color9 | rgb }} +$color10 = {{ color10 | rgb }} +$color11 = {{ color11 | rgb }} +$color12 = {{ color12 | rgb }} +$color13 = {{ color13 | rgb }} +$color14 = {{ color14 | rgb }} +$color15 = {{ color15 | rgb }} diff --git a/homes/modules/themeing/wallust/templates/imhex-template.theme b/homes/modules/themeing/wallust/templates/imhex-template.theme new file mode 100644 index 0000000..1100a87 --- /dev/null +++ b/homes/modules/themeing/wallust/templates/imhex-template.theme @@ -0,0 +1,405 @@ +{ + "base": "Dark", + "colors": { + "imgui": { + "border": "{{ foreground }}60", + "border-shadow": "#00000000", + "button": "{{ color14 }}60", + "button-active": "{{ color14 }}FF", + "button-hovered": "{{ color14 }}FF", + "check-mark": "{{ color11 }}FF", + "child-background": "{{ background }}FF", + "docking-empty-background": "{{ background | darken(0.2) }}FF", + "docking-preview": "#4296F9B2", + "drag-drop-target": "#FFFF00E5", + "frame-background": "#284D7A89", + "frame-background-active": "#4296F9AA", + "frame-background-hovered": "#4296F966", + "header": "{{ color3 }}C0", + "header-active": "{{ color3 }}FF", + "header-hovered": "{{ color3 }}E0", + "input-text-cursor": "{{ foreground }}FF", + "menu-bar-background": "{{ background }}FF", + "modal-window-dim-background": "#CCCCCC30", + "nav-highlight": "#4296F9FF", + "nav-windowing-background": "#CCCCCC33", + "nav-windowing-highlight": "#FFFFFFB2", + "plot-histogram": "#E5B200FF", + "plot-histogram-hovered": "#FF9900FF", + "plot-lines": "#9B9B9BFF", + "plot-lines-hovered": "#FF6D59FF", + "popup-background": "{{ background }}FF", + "resize-grip": "#4296F933", + "resize-grip-active": "#4296F9F2", + "resize-grip-hovered": "#4296F9AA", + "scrollbar-background": "#05050587", + "scrollbar-grab": "#4F4F4FFF", + "scrollbar-grab-active": "#828282FF", + "scrollbar-grab-hovered": "#686868FF", + "separator": "#6D6D7F7F", + "separator-active": "#1965BFFF", + "separator-hovered": "#1965BFC6", + "slider-grab": "#3D87E0FF", + "slider-grab-active": "#4296F9FF", + "tab": "{{ color2 }}80", + "tab-active": "{{ color2 }}E0", + "tab-active-overline": "#00000000", + "tab-hovered": "{{ color2 }}C0", + "tab-unfocused": "{{ color2 }}80", + "tab-unfocused-active": "{{ color2 }}B0", + "tab-unfocused-active-overline": "#00000000", + "table-border-light": "{{ foreground }}50", + "table-border-strong": "{{ foreground }}90", + "table-header-background": "{{ background | darken(0.2) }}FF", + "table-row-background": "#00000000", + "table-row-background-alt": "{{ foreground }}0F", + "text": "{{ foreground }}FF", + "text-disabled": "{{ foreground }}FF", + "text-link": "{{ color13 }}FF", + "text-selected-background": "{{ color13 }}60", + "title-background": "{{ background | darken(0.3) }}FF", + "title-background-active": "{{ background | darken(0.3) }}FF", + "title-background-collapse": "{{ background | darken(0.3) }}FF", + "tree-lines": "#6D6D7F7F", + "window-background": "{{ background }}FF", + "window-shadow": "#00000000" + }, + "imhex": { + "IEEE-tool-exp": "#5D7F5DFF", + "IEEE-tool-mantissa": "#7F5D5DFF", + "IEEE-tool-sign": "#5D5D7FFF", + "achievement-unlocked": "#F1C40FFF", + "advanced-encoding-ascii": "#7BB4E9FF", + "advanced-encoding-multi": "#F3DF91FF", + "advanced-encoding-single": "#E7978FFF", + "advanced-encoding-unknown": "#E7978FFF", + "blur-background": "#00000000", + "desc-button": "{{ background }}FF", + "desc-button-active": "{{ color10 }}C0", + "desc-button-hovered": "{{ color10 }}80", + "diff-added": "#388B42FF", + "diff-changed": "#F1C40FFF", + "diff-removed": "#E74C3CFF", + "find-highlight": "#672A78FF", + "highlight": "#4DC69BFF", + "logger-debug": "#388B42FF", + "logger-error": "#E74C3CFF", + "logger-fatal": "#672A78FF", + "logger-info": "#06539BFF", + "logger-warning": "#F1C40FFF", + "patches": "#E74C3CFF", + "pattern-selected": "#3683CBFF", + "toolbar-blue": "{{ color12 }}FF", + "toolbar-brown": "{{ color13 }}FF", + "toolbar-gray": "{{ color14 }}FF", + "toolbar-green": "{{ color4 }}FF", + "toolbar-purple": "{{ color5 }}FF", + "toolbar-red": "{{ color6 }}FF", + "toolbar-yellow": "{{ color11 }}FF" + }, + "imnodes": { + "box-selector": "#3D87E01E", + "box-selector-outline": "#3D87E096", + "grid-background": "{{ foreground }}7F", + "grid-line": "{{ foreground }}7F", + "grid-line-primary": "{{ foreground }}7F", + "link": "#3D87E0C8", + "link-hovered": "#4296FAFF", + "link-selected": "#4296FAFF", + "mini-map-background": "#19191996", + "mini-map-background-hovered": "#191919C8", + "mini-map-canvas": "#C8C8C819", + "mini-map-canvas-outline": "#C8C8C8C8", + "mini-map-link": "#3D87E0C8", + "mini-map-link-selected": "#4296FAFF", + "mini-map-node-background": "#C8C8C864", + "mini-map-node-background-hovered": "#C8C8C8FF", + "mini-map-node-background-selected": "#C8C8C8FF", + "mini-map-node-outline": "#C8C8C864", + "mini-map-outline": "#96969664", + "mini-map-outline-hovered": "#969696C8", + "node-background": "#323232FF", + "node-background-hovered": "#4B4B4BFF", + "node-background-selected": "#4B4B4BFF", + "node-outline": "#646464FF", + "pin": "#F5CB25FF", + "pin-hovered": "#FA8335FF", + "title-bar": "#294E7AFF", + "title-bar-hovered": "#4296FAFF", + "title-bar-selected": "#4296FAFF" + }, + "implot": { + "axis-bg": "#00000000", + "axis-bg-active": "#00000000", + "axis-bg-hovered": "#00000000", + "axis-grid": "#FFFFFF3F", + "axis-text": "#FFFFFFFF", + "axis-tick": "#00000000", + "crosshairs": "#FFFFFF7F", + "error-bar": "#00000000", + "fill": "#00000000", + "frame-bg": "#FFFFFF11", + "inlay-text": "#FFFFFFFF", + "legend-bg": "#141414EF", + "legend-border": "#6D6D7F7F", + "legend-text": "#FFFFFFFF", + "line": "#00000000", + "marker-fill": "#00000000", + "marker-outline": "#00000000", + "plot-bg": "#0000007F", + "plot-border": "#6D6D7F7F", + "selection": "#FF9900FF", + "title-text": "#FFFFFFFF" + }, + "text-editor": { + "attribute": "#AAAAAAFF", + "background": "{{ background }}{{ 100 | alpha_hexa }}", + "breakpoint": "#FF200040", + "calculated-pointer": "#AAAAAAFF", + "char-literal": "#E0A070FF", + "comment": "#206020FF", + "current-line-edge": "#A0A0A040", + "current-line-fill": "#00000040", + "current-line-fill-inactive": "#80808040", + "cursor": "#E0E0E0FF", + "debug-text": "#8A8A8AFF", + "default": "#7F7F7FFF", + "default-text": "#7F7F7FFF", + "doc-block-comment": "#206020FF", + "doc-comment": "#206020FF", + "doc-global-comment": "#206020FF", + "error-marker": "#FF200080", + "error-text": "#FF200080", + "function": "#AAAAAAFF", + "function-parameter": "#AAAAAAFF", + "function-variable": "#AAAAAAFF", + "global-variable": "#AAAAAAFF", + "identifier": "#AAAAAAFF", + "keyword": "{{ color13 }}{{ 100 | alpha_hexa }}", + "known-identifier": "#4DC69BFF", + "line-number": "{{ color13 }}{{ 100 | alpha_hexa }}", + "local-variable": "#AAAAAAFF", + "multi-line-comment": "#206040FF", + "namespace": "#AAAAAAFF", + "number": "#00FF00FF", + "pattern-variable": "#AAAAAAFF", + "placed-variable": "#AAAAAAFF", + "preproc-identifier": "#808060FF", + "preprocessor": "#808060FF", + "preprocessor-deactivated": "#4F4F4F45", + "punctuation": "#7F7F7FFF", + "selection": "#205AA080", + "separator": "#7F7F7FFF", + "string": "#E07070FF", + "template-variable": "#AAAAAAFF", + "typedef": "#AAAAAAFF", + "unknown-identifier": "#FC2C2CFE", + "user-defined-type": "#AAAAAAFF", + "view": "#AAAAAAFF", + "warning-text": "#FFFF00FF" + } + }, + "image_theme": "dark", + "name": "base16", + "styles": { + "imgui": { + "alpha": 1.0, + "button-text-align": [ + 0.5, + 0.5 + ], + "cell-padding": [ + 4.0, + 2.0 + ], + "child-border-size": 1.0, + "child-rounding": 0.0, + "circle-tessellation-max-error": 0.30000001192092896, + "columns-min-spacing": 6.0, + "curve-tessellation-tol": 1.25, + "disabled-alpha": 0.6000000238418579, + "display-safe-area-padding": [ + 3.0, + 3.0 + ], + "display-window-padding": [ + 19.0, + 19.0 + ], + "docking-separator-size": 2.0, + "frame-border-size": 0.0, + "frame-padding": [ + 4.0, + 3.0 + ], + "frame-rounding": 0.0, + "grab-min-size": 12.0, + "grab-rounding": 0.0, + "image-border-size": 0.0, + "indent-spacing": 21.0, + "item-inner-spacing": [ + 4.0, + 4.0 + ], + "item-spacing": [ + 8.0, + 4.0 + ], + "log-slider-deadzone": 4.0, + "mouse-cursor-scale": 1.0, + "popup-border-size": 1.0, + "popup-rounding": 0.0, + "scrollbar-rounding": 9.0, + "scrollbar-size": 14.0, + "selectable-text-align": [ + 0.0, + 0.0 + ], + "separator-text-align": [ + 0.0, + 0.5 + ], + "separator-text-border-size": 3.0, + "separator-text-padding": [ + 20.0, + 3.0 + ], + "tab-bar-border-size": 1.0, + "tab-bar-overline-size": 1.0, + "tab-border-size": 0.0, + "tab-close-button-min-width-selected": -1.0, + "tab-close-button-min-width-unselected": 0.0, + "tab-min-width-base": 1.0, + "tab-min-width-shrink": 80.0, + "tab-rounding": 5.0, + "touch-extra-padding": [ + 0.0, + 0.0 + ], + "window-border-hover-padding": 4.0, + "window-border-size": 1.0, + "window-min-size": [ + 32.0, + 32.0 + ], + "window-padding": [ + 8.0, + 8.0 + ], + "window-rounding": 0.0, + "window-shadow-angle": 0.785398006439209, + "window-shadow-offset": 0.0, + "window-shadow-size": 100.0, + "window-title-align": [ + 0.0, + 0.5 + ] + }, + "imhex": { + "popup-alpha": 0.6499999761581421, + "window-blur": 0.0 + }, + "imnodes": { + "grid-spacing": 24.0, + "link-hover-distance": 10.0, + "link-line-segments-per-length": 0.10000000149011612, + "link-thickness": 3.0, + "mini-map-offset": [ + 4.0, + 4.0 + ], + "mini-map-padding": [ + 8.0, + 8.0 + ], + "node-border-thickness": 1.0, + "node-corner-rounding": 4.0, + "node-padding": [ + 8.0, + 8.0 + ], + "pin-circle-radius": 4.0, + "pin-hover-radius": 10.0, + "pin-line-thickness": 1.0, + "pin-offset": 0.0, + "pin-quad-side-length": 7.0, + "pin-triangle-side-length": 9.5 + }, + "implot": { + "annotation-padding": [ + 2.0, + 2.0 + ], + "digital-bit-gap": 4.0, + "digital-bit-height": 8.0, + "error-bar-size": 5.0, + "error-bar-weight": 1.5, + "fill-alpha": 1.0, + "fit-padding": [ + 0.0, + 0.0 + ], + "label-padding": [ + 5.0, + 5.0 + ], + "legend-inner-padding": [ + 5.0, + 5.0 + ], + "legend-padding": [ + 10.0, + 10.0 + ], + "legend-spacing": [ + 5.0, + 0.0 + ], + "line-weight": 1.0, + "major-grid-size": [ + 1.0, + 1.0 + ], + "major-tick-len": [ + 10.0, + 10.0 + ], + "major-tick-size": [ + 1.0, + 1.0 + ], + "marker-size": 4.0, + "marker-weight": 1.0, + "minor-alpha": 0.25, + "minor-grid-size": [ + 1.0, + 1.0 + ], + "minor-tick-len": [ + 5.0, + 5.0 + ], + "minor-tick-size": [ + 1.0, + 1.0 + ], + "mouse-pos-padding": [ + 10.0, + 10.0 + ], + "plot-border-size": 1.0, + "plot-default-size": [ + 400.0, + 300.0 + ], + "plot-min-size": [ + 200.0, + 150.0 + ], + "plot-padding": [ + 10.0, + 10.0 + ] + } + } +} diff --git a/homes/modules/themeing/wallust/templates/kitty-template.conf b/homes/modules/themeing/wallust/templates/kitty-template.conf new file mode 100644 index 0000000..c0ba6b9 --- /dev/null +++ b/homes/modules/themeing/wallust/templates/kitty-template.conf @@ -0,0 +1,45 @@ +# background & foreground +foreground {{ foreground }} +background {{ background }} +selection_foreground {{ background }} +selection_background {{ foreground }} + +# cursor +cursor {{ cursor }} +cursor_text_color {{ cursor }} + +# other cursor colors to use +# cursor: foreground +# cursor_text_color: color8 + +# black +color0 {{ color0 }} +color8 {{ color8 }} + +# red +color1 {{ color1 }} +color9 {{ color9 }} + +# green +color2 {{ color2 }} +color10 {{ color10 }} + +# yellow +color3 {{ color3 }} +color11 {{ color11 }} + +# blue +color4 {{ color4 }} +color12 {{ color12 }} + +# magenta +color5 {{ color5 }} +color13 {{ color13 }} + +# cyan +color6 {{ color6 }} +color14 {{ color14 }} + +# white +color7 {{ color7 }} +color15 {{ color15 }} diff --git a/homes/modules/themeing/wallust/templates/neovim-template b/homes/modules/themeing/wallust/templates/neovim-template new file mode 100644 index 0000000..433a3eb --- /dev/null +++ b/homes/modules/themeing/wallust/templates/neovim-template @@ -0,0 +1,18 @@ +{{ color0 }} +{{ color1 }} +{{ color2 }} +{{ color3 }} +{{ color4 }} +{{ color5 }} +{{ color6 }} +{{ color7 }} +{{ color8 }} +{{ color9 }} +{{ color10 }} +{{ color11 }} +{{ color12 }} +{{ color13 }} +{{ color14 }} +{{ color15 }} +{{ background }} +{{ foreground }} diff --git a/homes/modules/themeing/wallust/templates/spicetify-template.ini b/homes/modules/themeing/wallust/templates/spicetify-template.ini new file mode 100644 index 0000000..e69de29 diff --git a/homes/modules/themeing/wallust/templates/waybar-template.css b/homes/modules/themeing/wallust/templates/waybar-template.css new file mode 100644 index 0000000..e9bba66 --- /dev/null +++ b/homes/modules/themeing/wallust/templates/waybar-template.css @@ -0,0 +1,18 @@ +@define-color colorbg {{ background }}; +@define-color colorfg {{ foreground }}; +@define-color color00 {{ color0 }}; +@define-color color01 {{ color1 }}; +@define-color color02 {{ color2 }}; +@define-color color03 {{ color3 }}; +@define-color color04 {{ color4 }}; +@define-color color05 {{ color5 }}; +@define-color color06 {{ color6 }}; +@define-color color07 {{ color7 }}; +@define-color color08 {{ color8 }}; +@define-color color09 {{ color9 }}; +@define-color color10 {{ color10 }}; +@define-color color11 {{ color11 }}; +@define-color color12 {{ color12 }}; +@define-color color13 {{ color13 }}; +@define-color color14 {{ color14 }}; +@define-color color15 {{ color15 }}; diff --git a/homes/modules/themeing/wallust/templates/zellij-template.kdl b/homes/modules/themeing/wallust/templates/zellij-template.kdl new file mode 100644 index 0000000..89fef47 --- /dev/null +++ b/homes/modules/themeing/wallust/templates/zellij-template.kdl @@ -0,0 +1,45 @@ +themes { + base16 { + ribbon_unselected { + base {{ background | red }} {{ background | green }} {{ background | blue }} + background {{ color0 | red }} {{ color0 | green }} {{ color0 | blue }} + emphasis_0 {{ foreground | red }} {{ foreground | green }} {{ foreground | blue }} + emphasis_1 {{ foreground | red }} {{ foreground | green }} {{ foreground | blue }} + emphasis_2 {{ foreground | red }} {{ foreground | green }} {{ foreground | blue }} + emphasis_3 {{ foreground | red }} {{ foreground | green }} {{ foreground | blue }} + } + ribbon_selected { + base {{ background | red }} {{ background | green }} {{ background | blue }} + background {{ color12 | red }} {{ color12 | green }} {{ color12 | blue }} + emphasis_0 {{ foreground | red }} {{ foreground | green }} {{ foreground | blue }} + emphasis_1 {{ foreground | red }} {{ foreground | green }} {{ foreground | blue }} + emphasis_2 {{ foreground | red }} {{ foreground | green }} {{ foreground | blue }} + emphasis_3 {{ foreground | red }} {{ foreground | green }} {{ foreground | blue }} + } + + frame_unselected { + base {{ color1 | red }} {{ color1 | green }} {{ color1 | blue }} + background {{ background | red }} {{ background | green }} {{ background | blue }} + emphasis_0 {{ foreground | red }} {{ foreground | green }} {{ foreground | blue }} + emphasis_1 {{ foreground | red }} {{ foreground | green }} {{ foreground | blue }} + emphasis_2 {{ foreground | red }} {{ foreground | green }} {{ foreground | blue }} + emphasis_3 {{ foreground | red }} {{ foreground | green }} {{ foreground | blue }} + } + frame_selected { + base {{ color14 | red }} {{ color14 | green }} {{ color14 | blue }} + background {{ background | red }} {{ background | green }} {{ background | blue }} + emphasis_0 {{ foreground | red }} {{ foreground | green }} {{ foreground | blue }} + emphasis_1 {{ foreground | red }} {{ foreground | green }} {{ foreground | blue }} + emphasis_2 {{ foreground | red }} {{ foreground | green }} {{ foreground | blue }} + emphasis_3 {{ foreground | red }} {{ foreground | green }} {{ foreground | blue }} + } + frame_highlight { + base {{ color13 | red }} {{ color13 | green }} {{ color13 | blue }} + background {{ background | red }} {{ background | green }} {{ background | blue }} + emphasis_0 {{ foreground | red }} {{ foreground | green }} {{ foreground | blue }} + emphasis_1 {{ foreground | red }} {{ foreground | green }} {{ foreground | blue }} + emphasis_2 {{ foreground | red }} {{ foreground | green }} {{ foreground | blue }} + emphasis_3 {{ foreground | red }} {{ foreground | green }} {{ foreground | blue }} + } + } +} diff --git a/homes/modules/themeing/wallust/wallust.nix b/homes/modules/themeing/wallust/wallust.nix new file mode 100644 index 0000000..207c4ef --- /dev/null +++ b/homes/modules/themeing/wallust/wallust.nix @@ -0,0 +1,20 @@ +{ config, inputs, lib, pkgs, ... }: +let + unstable = inputs.nixpkgs-unstable.legacyPackages.${pkgs.stdenv.hostPlatform.system}; +in +{ + home.packages = with pkgs; [ + wallust + ]; + + # writes ./wallust.toml to ~/.config/wallust/wallust.toml + xdg.configFile."wallust/wallust.toml" = { + source = ./wallust.toml; + }; + + # writes ./templates to ~/.config/wallust/templates + xdg.configFile."wallust/templates" = { + recursive = true; + source = ./templates; + }; +} diff --git a/homes/modules/themeing/wallust/wallust.toml b/homes/modules/themeing/wallust/wallust.toml new file mode 100644 index 0000000..efff412 --- /dev/null +++ b/homes/modules/themeing/wallust/wallust.toml @@ -0,0 +1,35 @@ +check_contrast = true + +[templates] +vesktop.template = "discord-template.css" +vesktop.target = "~/.config/vesktop/themes/base16-colors.css" + +vencord.template = "discord-template.css" +vencord.target = "~/.config/Vencord/themes/base16-colors.css" + +equibop.template = "discord-template.css" +equibop.target = "~/.config/equibop/themes/base16-colors.css" + +equicord.template = "discord-template.css" +equicord.target = "~/.config/Equicord/themes/base16-colors.css" + +kitty.template = "kitty-template.conf" +kitty.target = "~/.config/kitty/theme.conf" + +hyprland.template = "hyprland-template.conf" +hyprland.target = "~/.config/hypr/colors.conf" + +waybar.template = "waybar-template.css" +waybar.target = "~/.config/waybar/colors.css" + +neovim.template = "neovim-template" +neovim.target = "~/.cache/nvim/neovim-colors" + +aurorashell.template = "aurorashell-template.toml" +aurorashell.target = "~/.config/aurorashell/colors.toml" + +zellij.template = "zellij-template.kdl" +zellij.target = "~/.config/zellij/themes/base16.kdl" + +imhex.template = "imhex-template.theme" +imhex.target = "~/.local/share/imhex/themes/base16.theme" diff --git a/homes/modules/wm/hyprland/hypr/keybinds/virtual.conf b/homes/modules/wm/hyprland/hypr/keybinds/virtual.conf new file mode 100644 index 0000000..076c602 --- /dev/null +++ b/homes/modules/wm/hyprland/hypr/keybinds/virtual.conf @@ -0,0 +1,43 @@ +# a submap for emulating keys/buttons/functions on the keyboard or mouse + +bind = $mod+shift+alt, a, submap, virtual +submap = virtual + +# exit submap +bind = , escape, submap, reset + +# emulates mouse buttons +bind = , z, exec, wlrctl pointer click left +bind = , x, exec, wlrctl pointer click right +bind = , s, exec, wlrctl pointer click middle +bind = , i, exec, wlrctl pointer click forward +bind = , o, exec, wlrctl pointer click back + +# emulates the arrow keys using hjkl +#binde = , h, exec, wtype -k Left +#binde = , j, exec, wtype -k Down +#binde = , k, exec, wtype -k Up +#binde = , l, exec, wtype -k Right + +# moves the mouse pointer +binde = , h, exec, wlrctl pointer move -30 0 +binde = , j, exec, wlrctl pointer move 0 30 +binde = , k, exec, wlrctl pointer move 0 -30 +binde = , l, exec, wlrctl pointer move 30 0 + +# moves the mouse pointer in little steps +binde = alt, h, exec, wlrctl pointer move -15 0 +binde = alt, j, exec, wlrctl pointer move 0 15 +binde = alt, k, exec, wlrctl pointer move 0 -15 +binde = alt, l, exec, wlrctl pointer move 15 0 + +# emulates scrolling with mouse +binde = , e, exec, wlrctl pointer scroll 0 -15 # scroll up +binde = , y, exec, wlrctl pointer scroll 0 15 # scroll down +binde = alt, e, exec, wlrctl pointer scroll -15 0 # scroll left +binde = alt, y, exec, wlrctl pointer scroll 0 15 # scroll right + +# catches all other keys and keeps us in the submap +bind = , catchall, submap, virtual + +submap = reset diff --git a/homes/modules/wm/hyprland/hypr/theme.conf b/homes/modules/wm/hyprland/hypr/theme.conf new file mode 100644 index 0000000..22cbd57 --- /dev/null +++ b/homes/modules/wm/hyprland/hypr/theme.conf @@ -0,0 +1,19 @@ +general { + # border colors that works in most situations + col.inactive_border = rgb($colorbg) rgb($color09) 45deg + col.active_border = rgb($colorfg) rgb($color11) 45deg + + # transparent inactive border colors + # col.inactive_border = rgba($color01,0.0) rgba($color03,0.0) 45deg + + # experimental border colors that may not look good all the time + # col.inactive_border = rgba($color01,0.6) rgba($color03,0.6) 45deg + # col.active_border = rgb($color09) rgb($color11) 45deg +} + +decoration { + shadow { + enabled = false + range = 2 + } +} diff --git a/homes/modules/wm/hyprland/hypr/windowrules.conf b/homes/modules/wm/hyprland/hypr/windowrules.conf new file mode 100644 index 0000000..1d2c078 --- /dev/null +++ b/homes/modules/wm/hyprland/hypr/windowrules.conf @@ -0,0 +1,61 @@ +# window rules + +# ---------------------------------------------------------------------------- # +# task manager +windowrule { + name = task-manager + match:class = ^(kitty)$ + match:title = ^(btop)$ + float = true + center = true + size = (monitor_w*0.65) (monitor_h*0.65) +} + +# ---------------------------------------------------------------------------- # +# terminal filechooser +windowrule { + name = terminal-filechooser + match:class = ^(kitty)$ + match:title = ^(filechooser)$ + float = true + center = true + size = (monitor_w*0.85) (monitor_h*0.85) +} + +# ---------------------------------------------------------------------------- # +# yazi explorer +#windowrule { + #name = yazi + #match:class = ^(kitty)$ + #match:title = ^(yazi)$ + #float = true + #center = true + #size = (monitor_w*0.85) (monitor_h*0.85) +#} + +# ---------------------------------------------------------------------------- # +# kitty - blur +windowrule { + name = kitty-blur + match:class = ^(kitty)$ + match:fullscreen = false + opacity = 0.95 +} + +# ---------------------------------------------------------------------------- # +# imhex - blur +windowrule { + name = imhex-blur + match:class = ^(imhex)$ + match:fullscreen = false + opacity = 0.97 +} + +# ---------------------------------------------------------------------------- # +# discord - blur +windowrule { + name = discord-blur + match:initial_title = ^(Discord|Discord Popout)$ + match:fullscreen = false + opacity = 0.97 +} diff --git a/homes/modules/wm/hyprland/hyprland.nix b/homes/modules/wm/hyprland/hyprland.nix new file mode 100644 index 0000000..0d9764c --- /dev/null +++ b/homes/modules/wm/hyprland/hyprland.nix @@ -0,0 +1,314 @@ +{ config, inputs, pkgs, ... }: +let + unstable = inputs.nixpkgs-unstable.legacyPackages.${pkgs.stdenv.hostPlatform.system}; + hyprland-git = inputs.hyprland-git.packages.${pkgs.stdenv.hostPlatform.system}; +in +{ + wayland.windowManager.hyprland = { + enable = true; + package = null; + portalPackage = null; + + plugins = [ + #inputs.hyprland-plugins.packages.${pkgs.stdenv.hostPlatform.system}.hyprscrolling + ]; + + xwayland.enable = true; + + extraConfig = '' + source = ./colors.conf + source = ./theme.conf + source = ./windowrules.conf + + source = ./keybinds/virtual.conf + ''; + + settings = { + # shorthand command keywords + "$mod" = "SUPER"; + + # applications + "$terminal" = "kitty"; + "$explorer" = "kitty -e yazi"; + "$browser" = "zen"; + + # menu + "$menu" = "rofi"; + + # startup programs + exec-once = [ + "waybar" + "awww-daemon" + + "wl-paste --type text --watch cliphist store" + "wl-paste --type image --watch cliphist store" + "wl-clip-persist --clipboard regular" + + "playerctld daemon" + + # swaps around the 3rd and 4th workspace because they always start + # in the wrong order + "hyprctl dispatch workspace 4 && hyprctl dispatch workspace 5 && hyprctl dispatch workspace 3 && hyprctl dispatch workspace 4 && hyprctl dispatch workspace 5 && hyprctl dispatch workspace 3 && hyprctl dispatch workspace 1" + ]; + + # monitor configuration + monitor = [ + # note: display stream compression pending for open source + # amd gpu driver and my monitor (VG279QM) only supports DP 1.2 + # so no >240hz atm + "DP-2, 1920x1080@239.76, 0x0, 1" # main monitor + "DP-3, 1920x1080@143.61, 1920x0, 1" # second monitor + "HDMI-A-2, 2560x1440@59.95, 3840x0, 1" # third monitor (drawing tablet) + "HDMI-A-1, 1920x1080@60.00, -1920x0, 1" # tv + ]; + + general = { + gaps_in = 5; + gaps_out = "0, 10, 10, 10"; + border_size = 2; + layout = "dwindle"; + }; + + plugin = { + # options at https://github.com/hyprwm/hyprland-plugins/tree/main/hyprscrolling + hyprscrolling = { + fullscreen_on_one_column = false; + column_width = 1.0; + }; + }; + + dwindle = { + preserve_split = true; + }; + + decoration = { + rounding = 8; + + active_opacity = 1.00; + inactive_opacity = 1.00; + + blur = { + xray = true; + size = 6; + passes = 2; + #vibrancy = 0.3; + special = true; + }; + }; + + bezier = [ + "workspace_curve, 0.56,0.19,0.24,0.58" + "workspace_in_curve, 0.56,0.19,0.56,0.99" + ]; + + animation = [ + #"workspaces, 1, 1.94, workspace_in_curve, slide" + #"workspacesIn, 1, 1.21, workspace_in_curve, slide" + #"workspacesOut, 1, 1.94, workspace_in_curve, slide" + ]; + + input = { + repeat_rate = 50; + repeat_delay = 300; + + sensitivity = 0; # 0 = no modification + accel_profile = "flat"; + force_no_accel = false; # not recommended to turn on + }; + + cursor.no_hardware_cursors = true; + + misc = { + enable_anr_dialog = false; + font_family = "DepartureMono Nerd Font"; + }; + + # bindings + bind = [ + # binds for applications + "$mod, t, exec, $terminal" + "$mod, r, exec, $browser" + "$mod, e, exec, $explorer" + + # binds for rofi + "$mod, d, exec, pkill -x rofi || rofi -show drun -show-icons" + "alt, tab, exec, pkill -x rofi || rofi -modi window -show window -show-icons" + "$mod, v, exec, pkill -x rofi || cliphist list | rofi -dmenu | cliphist decode | wl-copy" + + # screenshots + # todo: add active monitor + "$mod, s, exec, grim -g \"\$(slurp -d)\" - | wl-copy" # region + "$mod+alt, s, exec, grim -g \"\$(slurp -o)\" - | wl-copy" # monitor + "$mod+ctrl, s, exec, grim - | wl-copy" # all monitors + + # hyprpicker + "$mod, n, exec, hyprpicker -v" + # hyprlock + "$mod+alt, y, exec, hyprlock" + # task manager + "$mod+ctrl, escape, exec, task-manager.sh" + "$mod+ctrl, grave, exec, task-manager.sh" + + # media binds (more in binde below) + ", XF86AudioMute, exec, wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle" + ", XF86AudioPlay, exec, playerctl play-pause" + ", XF86AudioNext, exec, playerctl next" + ", XF86AudioPrev, exec, playerctl previous" + "Shift_R, XF86AudioPlay, exec, playerctl shuffle toggle" + "Shift_R, XF86AudioNext, exec, playerctl loop track" + + # manage windows / session + "$mod+alt, c, killactive" + "$mod, f, fullscreen" + "$mod, x, togglefloating" + "$mod, i, togglesplit" + "$mod+Alt, Delete, exit" # exit hyprland + + # move focus + "$mod, h, movefocus, l" + "$mod, j, movefocus, d" + "$mod, k, movefocus, u" + "$mod, l, movefocus, r" + + # move window + "$mod+alt, h, movewindow, l" + "$mod+alt, j, movewindow, d" + "$mod+alt, k, movewindow, u" + "$mod+alt, l, movewindow, r" + + # swap window + "$mod+ctrl, h, swapwindow, l" + "$mod+ctrl, j, swapwindow, d" + "$mod+ctrl, k, swapwindow, u" + "$mod+ctrl, l, swapwindow, r" + + # move column (hyprscrolling) + "$mod, period, layoutmsg, move +col" + "$mod, comma, layoutmsg, move -col" + + # focus monitor + #"$mod+Ctrl+Tab, 1, focusmonitor, DP-2" + #"$mod+Ctrl+Tab, 2, focusmonitor, DP-3" + #"$mod+Ctrl+Tab, 3, focusmonitor, HDMI-A-2" + #"$mod+Ctrl+Tab, 4, focusmonitor, HDMI-A-1" + + # move workspace to monitor + #"$mod+Tab, 1, movecurrentworkspacetomonitor, DP-2" + #"$mod+Tab, 2, movecurrentworkspacetomonitor, DP-3" + #"$mod+Tab, 3, movecurrentworkspacetomonitor, HDMI-A-2" + #"$mod+Tab, 4, movecurrentworkspacetomonitor, HDMI-A-1" + + # special workspace + "$mod, escape, togglespecialworkspace" + "$mod+shift, escape, movetoworkspace, special" + "$mod+alt, escape, movetoworkspacesilent, special" + "$mod, grave, togglespecialworkspace" + "$mod+shift, grave, movetoworkspace, special" + "$mod+alt, grave, movetoworkspacesilent, special" + + # switch workspaces + "$mod, 1, workspace, 1" + "$mod, 2, workspace, 2" + "$mod, 3, workspace, 3" + "$mod, 4, workspace, 4" + "$mod, 5, workspace, 5" + "$mod, 6, workspace, 6" + "$mod, 7, workspace, 7" + "$mod, 8, workspace, 8" + "$mod, 9, workspace, 9" + "$mod, 0, workspace, 10" + "$mod, minus, workspace, 11" + "$mod, equal, workspace, 12" + + # move focused window to workspace + "$mod+shift, 1, movetoworkspace, 1" + "$mod+shift, 2, movetoworkspace, 2" + "$mod+shift, 3, movetoworkspace, 3" + "$mod+shift, 4, movetoworkspace, 4" + "$mod+shift, 5, movetoworkspace, 5" + "$mod+shift, 6, movetoworkspace, 6" + "$mod+shift, 7, movetoworkspace, 7" + "$mod+shift, 8, movetoworkspace, 8" + "$mod+shift, 9, movetoworkspace, 9" + "$mod+shift, 0, movetoworkspace, 10" + "$mod+shift, minus, movetoworkspace, 11" + "$mod+shift, equal, movetoworkspace, 12" + + # move focused window to workspace silently + "$mod+alt, 1, movetoworkspacesilent, 1" + "$mod+alt, 2, movetoworkspacesilent, 2" + "$mod+alt, 3, movetoworkspacesilent, 3" + "$mod+alt, 4, movetoworkspacesilent, 4" + "$mod+alt, 5, movetoworkspacesilent, 5" + "$mod+alt, 6, movetoworkspacesilent, 6" + "$mod+alt, 7, movetoworkspacesilent, 7" + "$mod+alt, 8, movetoworkspacesilent, 8" + "$mod+alt, 9, movetoworkspacesilent, 9" + "$mod+alt, 0, movetoworkspacesilent, 10" + "$mod+alt, minus, movetoworkspacesilent, 11" + "$mod+alt, equal, movetoworkspacesilent, 12" + + # move current workspace to monitor + "$mod+shift+alt, 1, movecurrentworkspacetomonitor, DP-2" + "$mod+shift+alt, 2, movecurrentworkspacetomonitor, DP-3" + "$mod+shift+alt, 3, movecurrentworkspacetomonitor, HDMI-A-2" + "$mod+shift+alt, 4, movecurrentworkspacetomonitor, HDMI-A-1" + ]; + + # bindings for mouse + bindm = [ + "$mod, mouse:272, movewindow" # left click + "$mod, mouse:273, resizewindow" # right click + ]; + + # repeating binds, repeats when held + binde = [ + ", XF86AudioRaiseVolume, exec, wpctl set-volume -l 1.0 @DEFAULT_AUDIO_SINK@ 5%+" + ", XF86AudioLowerVolume, exec, wpctl set-volume -l 1.0 @DEFAULT_AUDIO_SINK@ 5%-" + "Shift_R, XF86AudioRaiseVolume, exec, playerctl volume 0.05+" + "Shift_R, XF86AudioLowerVolume, exec, playerctl volume 0.05-" + + # resize window + # variable for `resizeactive` is (x, y) + # starting at 0, 0 in the top left + # meaning: + # -x = left + # +x = right + # -y = up + # +y = down + "$mod+ctrl+shift, h, resizeactive, -10 0" + "$mod+ctrl+shift, j, resizeactive, 0 10" + "$mod+ctrl+shift, k, resizeactive, 0 -10" + "$mod+ctrl+shift, l, resizeactive, 10 0" + ]; + + layerrule = [ + #"blur, rofi" + #"ignorezero, rofi" + #"blur, aurorashell" + #"ignorealpha 0.7, aurorashell" + "blur on, match:namespace waybar" + "ignore_alpha 0, match:namespace waybar" + ]; + + env = [ + "EDITOR,auravim" + + "XCURSOR_THEME,Bunny (Icy) and Strawberries" + "XCURSOR_SIZE,24" + "HYPRCURSOR_THEME,Bunny (Icy) and Strawberries" + "HYPRCURSOR_SIZE,24" + + "QT_QPA_PLATFORM,wayland" + ]; + }; + }; + + # extra hyprland config for organisation, + # and to load colors.conf + # writes ./hypr to ~/.config/hypr + xdg.configFile."hypr" = { + recursive = true; + source = ./hypr; + }; +} diff --git a/homes/modules/wm/river.nix b/homes/modules/wm/river.nix new file mode 100644 index 0000000..5c96740 --- /dev/null +++ b/homes/modules/wm/river.nix @@ -0,0 +1,83 @@ +{ config, inputs, pkgs, upkgs, ... }: +let + unstable = inputs.nixpkgs-unstable.legacyPackages.${pkgs.stdenv.hostPlatform.system}; +in +{ + wayland.windowManager.river = let + layout = "rivertile"; + in { + enable = true; + xwayland.enable = true; + package = upkgs.river-classic; # FIX: using upkgs version as zls is broken rn ;-; + + settings = let + main = "Super"; + + # applications + terminal = "kitty"; + browser = "firefox"; + in { + default-layout = "${layout}"; + output-layout = "${layout}"; + border-width = 1; + + spawn = [ + ''${layout}'' + + "awww-daemon" + "waybar" + ]; + + map.normal = { + "${main} C" = "close"; # close focused window + "${main}+Alt Delete" = "exit"; # exit river + + # app launcher + "${main} D" = ''spawn "pkill -x rofi || rofi -show drun -show-icons"''; + "Alt Tab" = ''spawn "pkill -x rofi || rofi -modi window -show window -show-icons"''; + + # spawn applications + "${main} T" = ''spawn "${terminal}"''; + "${main} R" = ''spawn "${browser}"''; + + # move focused view to top of layout stack + "${main} N" = ''zoom''; + + # focus next/previous view + "${main} J" = "focus-view previous"; + "${main} K" = "focus-view next"; + # move to next/previous output + "${main} H" = "focus-output previous"; + "${main} L" = "focus-output next"; + + # swap next/previous view + "${main}+Alt J" = "swap previous"; + "${main}+Alt K" = "swap next"; + # send view to next/previous output + # and switch to that output (wip) + "${main}+Alt H" = "send-to-output previous"; + #"${main}+Alt H" = "focus-output previous"; + "${main}+Alt L" = "send-to-output next"; + #"${main}+Alt L" = "focus-output next"; + + # move views + #"${main}+Alt H" = "move left 100"; + #"${main}+Alt J" = "move down 100"; + #"${main}+Alt K" = "move up 100"; + #"${main}+Alt L" = "move right 100"; + + # snap views + #"${main}+Control H" = "snap left"; + #"${main}+Control J" = "snap down"; + #"${main}+Control K" = "snap up"; + #"${main}+Control L" = "snap right"; + + # resize views + #"${main}+Shift H" = "resize horizontal -100"; + #"${main}+Shift J" = "resize vertical -100"; + #"${main}+Shift K" = "resize vertical 100"; + #"${main}+Shift L" = "resize horizontal 100"; + }; + }; + }; +} diff --git a/homes/modules/wm/sway.nix b/homes/modules/wm/sway.nix new file mode 100644 index 0000000..c5dd3be --- /dev/null +++ b/homes/modules/wm/sway.nix @@ -0,0 +1,53 @@ +{ config, inputs, pkgs, ... }: +let + unstable = inputs.nixpkgs-unstable.legacyPackages.${pkgs.stdenv.hostPlatform.system}; +in +{ + wayland.windowManager.sway = { + enable = true; + config = rec { + modifier = "Mod4"; # Mod4 = Super/Meta + terminal = "kitty"; + + # disable sway bar + bars = [ ]; + + # set border colors + #colors = { + #focused = + + startup = [ + { command = "awww-daemon"; } + { command = "waybar"; } + ]; + + keybindings = let + main = config.wayland.windowManager.sway.config.modifier; + terminal = config.wayland.windowManager.sway.config.terminal; + browser = "firefox"; + in { + "${main}+c" = "kill"; # close focused window + "${main}+Alt+Delete" = "exit"; # exit sway + + # open launcher + "${main}+d" = "exec pkill -x rofi || rofi -show drun -show-icons"; + "Alt+Tab" = "exec pkill -x rofi || rofi -modi window -show window -show-icons"; + + "${main}+t" = "exec ${terminal}"; # open terminal + "${main}+r" = "exec ${browser}"; # open browser + + # move focus + "${main}+h" = "focus left"; + "${main}+j" = "focus down"; + "${main}+k" = "focus up"; + "${main}+l" = "focus right"; + + # move focused window + "${main}+Alt+h" = "move left"; + "${main}+Alt+j" = "move down"; + "${main}+Alt+k" = "move up"; + "${main}+Alt+l" = "move right"; + }; + }; + }; +} diff --git a/hosts/nixarawrui/default.nix b/hosts/nixarawrui/default.nix new file mode 100644 index 0000000..c3d5c29 --- /dev/null +++ b/hosts/nixarawrui/default.nix @@ -0,0 +1,371 @@ +{ + inputs, + pkgs, + upkgs, + root, + ... +}: let + hyprland-git = inputs.hyprland-git.packages.${pkgs.stdenv.hostPlatform.system}; +in { + imports = [ + ./hardware-configuration.nix + + ./modules/amdgpu-ignore-ctx-privileges.nix + ]; + + # Enable the Flakes feature and the accompaying new nix command-line tool + nix.settings = { + experimental-features = ["nix-command" "flakes"]; + download-buffer-size = 524288000; + }; + + nixpkgs.config.allowUnfree = true; + + # Use the systemd-boot EFI boot loader. + boot = rec { + initrd.kernelModules = ["amdgpu"]; + + loader = { + systemd-boot.enable = true; + efi.canTouchEfiVariables = true; + }; + + # kernelPackages = pkgs.cachyosKernels.linuxPackages-cachyos-latest-lto-x86_64-v4; + kernelPackages = pkgs.linuxPackages_latest; + kernelModules = ["v4l2loopback"]; + extraModulePackages = with kernelPackages; [v4l2loopback]; + + # qemu + # boot.binfmt.emulatedSystems = [ + # "riscv64-linux" + # ]; + # the following line is from: + # https://discourse.nixos.org/t/chroot-into-arm-container-with-systemd-nspawn/34735 + # fixed my arch-chroot issue when trying to setup a risc v sd card for + # the mango pi mq pro + binfmt.preferStaticEmulators = true; + }; + + # bluetooth + services.blueman.enable = true; # gui bluetooth manager + + networking = { + hostName = "nixarawrui"; + networkmanager.enable = true; + firewall = { + enable = true; + # allows wireguard to route all traffic through default route <3 + checkReversePath = "loose"; + + allowedTCPPorts = [ + 21110 # slimevr + 44949 # rquickshare + ]; + allowedUDPPorts = [ + 6969 # slimevr + 8266 # slimevr + 35903 # slimevr + 44949 # rquickshare + ]; + }; + + nftables.enable = true; + wireguard.enable = true; + }; + + # hardware / driver stuff + hardware = { + keyboard = { + qmk.enable = true; + }; + opentabletdriver.enable = true; + wooting.enable = true; + xone.enable = true; + bluetooth.enable = true; + }; + + virtualisation = { + podman = { + enable = true; + dockerCompat = true; + }; + waydroid.enable = true; + }; + + environment.sessionVariables = { + NIXOS_OZONE_WL = "1"; + + # makes portals work correctly + QT_QPA_PLATFORMTHEME = "xdgdesktopportal"; + #QT_QPA_PLATFORMTHEME = "flatpak"; # sometimes might need this + }; + + xdg.portal = { + enable = true; + + wlr = { + enable = true; + }; + + extraPortals = with pkgs; [ + xdg-desktop-portal-termfilechooser + ]; + + config.common = { + "org.freedesktop.impl.portal.FileChooser" = ["termfilechooser"]; + }; + }; + + time.timeZone = "Europe/London"; + + i18n = { + defaultLocale = "en_US.UTF-8"; + supportedLocales = [ + "en_US.UTF-8/UTF-8" + "ja_JP.UTF-8/UTF-8" + ]; + }; + console = { + font = "Lat2-Terminus16"; + keyMap = "us"; + }; + + hardware.graphics = { + enable = true; + enable32Bit = true; + + extraPackages = with pkgs; [ + libva-vdpau-driver + libvdpau-va-gl + ]; + }; + + services = { + displayManager.sddm.enable = true; + displayManager.sddm.wayland.enable = true; + + udisks2.enable = true; + flatpak.enable = true; + + gnome.gnome-keyring.enable = true; + + # used for piper so u can configure silly little mice :3 + ratbagd.enable = true; + + # Enable sound. + pipewire = { + enable = true; + audio.enable = true; + wireplumber.enable = true; + + alsa.enable = true; + alsa.support32Bit = true; + pulse.enable = true; + }; + + udev = { + enable = true; + packages = with pkgs; [ + # adds via support for keyboards and stuffs :3 (needs reboot) + via + + # slimevr :33333333333 (i'm queer) + slimevr + platformio + ]; + extraRules = '' + # Wooting One Legacy + SUBSYSTEM=="hidraw", ATTRS{idVendor}=="03eb", ATTRS{idProduct}=="ff01", TAG+="uaccess" + SUBSYSTEM=="usb", ATTRS{idVendor}=="03eb", ATTRS{idProduct}=="ff01", TAG+="uaccess" + + # Wooting One update mode + SUBSYSTEM=="hidraw", ATTRS{idVendor}=="03eb", ATTRS{idProduct}=="2402", TAG+="uaccess" + + # Wooting Two LegacySUBSYSTEM=="hidraw", ATTRS{idVendor}=="03eb", ATTRS{idProduct}=="ff02", TAG+="uaccess" + SUBSYSTEM=="usb", ATTRS{idVendor}=="03eb", ATTRS{idProduct}=="ff02", TAG+="uaccess" + + # Wooting Two update mode + SUBSYSTEM=="hidraw", ATTRS{idVendor}=="03eb", ATTRS{idProduct}=="2403", TAG+="uaccess" + + # Generic Wootings + SUBSYSTEM=="hidraw", ATTRS{idVendor}=="31e3", TAG+="uaccess" + SUBSYSTEM=="usb", ATTRS{idVendor}=="31e3", TAG+="uaccess" + ''; + }; + }; + + security = { + rtkit.enable = true; + polkit.enable = true; + }; + + # Enable touchpad support (enabled default in most desktopManager). + # services.libinput.enable = true; + # Define a user account. Don't forget to set a password with ‘passwd’. + users = { + users.aurora = { + isNormalUser = true; + uid = 1000; + extraGroups = ["wheel" "disk" "input" "video" "audio" "networkmanager" "games"]; + + shell = pkgs.zsh; + + packages = with pkgs; [ + flatpak + tree + ]; + }; + groups.games = { + gid = 7000; + }; + }; + + home-manager = { + useGlobalPkgs = true; + useUserPackages = true; + + users.aurora = import ../../homes/aurora; + extraSpecialArgs = {inherit inputs upkgs root;}; + }; + + programs = { + # nix-ld runs unpatched dynamic binaries on nixos :3 + nix-ld.enable = true; + + # needed for gpg else no pinentry apparently + gnupg = { + agent.enable = true; + }; + + nh = { + enable = true; + clean.enable = true; + clean.extraArgs = "--keep-since 14d --keep 8"; + flake = "/etc/nixos"; # default flake + }; + + # hyprland, river, and sway have to be enabled here + # for there to be systemd entries for login managers + + # hyprland has to be enabled here for xdg portals + # to work properly on hyprland + hyprland = { + enable = true; + package = hyprland-git.hyprland; + portalPackage = hyprland-git.xdg-desktop-portal-hyprland; + }; + + river-classic = { + package = upkgs.river-classic; # FIX: using upkgs version as zls is broken rn ;-; + enable = true; + }; + + sway = { + enable = true; + wrapperFeatures.gtk = true; + }; + + # steam has to be enabled here + steam = { + enable = true; + package = pkgs.millennium-steam; + remotePlay.openFirewall = true; + dedicatedServer.openFirewall = true; + localNetworkGameTransfers.openFirewall = true; + gamescopeSession.enable = true; + }; + + alvr = { + enable = true; + package = upkgs.alvr; + openFirewall = true; + }; + + envision = { + enable = true; + openFirewall = true; + }; + + # any shell that you wanna use needs to be enabled globally + # to set the default shell for users + # per-user config is done in home manager + zsh.enable = true; + fish.enable = true; + + silentSDDM = { + enable = false; + theme = "rei"; + }; + }; + + # List packages installed in system profile. To search, run: + # $ nix search wget + environment.systemPackages = with pkgs; [ + # linux packages!!! + linuxPackages.v4l2loopback + + # android yay + android-tools + + # network manager extra packages + networkmanager-openvpn + + # um makes my keyboard worky + via + + # wine - needed for lutris :3 + wineWowPackages.stable + + # utils, apps, important default stuff ig :3 + neovim + wget + git + bash + + # waydroid needs it apparently for clipboard sharing?? + wl-clipboard + (waydroid.override { + python3Packages = pkgs.python312Packages; + }) + + # game stuff :3 + (lutris.override { + extraPkgs = pkgs: [ + libadwaita + ]; + }) + (steam.override { + extraPkgs = pkgs: [ + nss + xorg.libX11 + xorg.libXScrnSaver + ]; + }).run + + inputs.nix-alien.packages.${stdenv.hostPlatform.system}.nix-alien + ]; + + # Copy the NixOS configuration file and link it from the resulting system + # (/run/current-system/configuration.nix). This is useful in case you + # accidentally delete configuration.nix. + # system.copySystemConfiguration = true; + + # This option defines the first version of NixOS you have installed on this particular machine, + # and is used to maintain compatibility with application data (e.g. databases) created on older NixOS versions. + # + # Most users should NEVER change this value after the initial install, for any reason, + # even if you've upgraded your system to a new NixOS release. + # + # This value does NOT affect the Nixpkgs version your packages and OS are pulled from, + # so changing it will NOT upgrade your system - see https://nixos.org/manual/nixos/stable/#sec-upgrading for how + # to actually do that. + # + # This value being lower than the current NixOS release does NOT mean your system is + # out of date, out of support, or vulnerable. + # + # Do NOT change this value unless you have manually inspected all the changes it would make to your configuration, + # and migrated your data accordingly. + # + # For more information, see `man configuration.nix` or https://nixos.org/manual/nixos/stable/options#opt-system.stateVersion . + system.stateVersion = "24.11"; # Did you read the comment? +} diff --git a/hosts/nixarawrui/hardware-configuration.nix b/hosts/nixarawrui/hardware-configuration.nix new file mode 100644 index 0000000..fb2aef7 --- /dev/null +++ b/hosts/nixarawrui/hardware-configuration.nix @@ -0,0 +1,64 @@ +# 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 = [ "nvme" "xhci_pci" "ahci" "usb_storage" "usbhid" "sd_mod" ]; + boot.initrd.kernelModules = [ ]; + boot.kernelModules = [ "kvm-amd" ]; + boot.extraModulePackages = [ ]; + + fileSystems."/" = + { device = "/dev/disk/by-uuid/257dd2c7-59b1-431e-a5a1-c7db00b3312b"; + fsType = "btrfs"; + options = [ "subvol=@" ]; + }; + + fileSystems."/home" = + { device = "/dev/disk/by-uuid/257dd2c7-59b1-431e-a5a1-c7db00b3312b"; + fsType = "btrfs"; + options = [ "subvol=@home" ]; + }; + + fileSystems."/nix" = + { device = "/dev/disk/by-uuid/257dd2c7-59b1-431e-a5a1-c7db00b3312b"; + fsType = "btrfs"; + options = [ "subvol=@nix" ]; + }; + + fileSystems."/games" = + { device = "/dev/disk/by-uuid/257dd2c7-59b1-431e-a5a1-c7db00b3312b"; + fsType = "btrfs"; + options = [ "subvol=@games" ]; + }; + + fileSystems."/data" = + { device = "/dev/disk/by-uuid/257dd2c7-59b1-431e-a5a1-c7db00b3312b"; + fsType = "btrfs"; + options = [ "subvol=@data" ]; + }; + + fileSystems."/boot" = + { device = "/dev/disk/by-uuid/63DC-1AEB"; + fsType = "vfat"; + options = [ "fmask=0077" "dmask=0077" ]; + }; + + swapDevices = [ ]; + + # 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..useDHCP`. + networking.useDHCP = lib.mkDefault true; + # networking.interfaces.enp10s0.useDHCP = lib.mkDefault true; + # networking.interfaces.wlp9s0.useDHCP = lib.mkDefault true; + + nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux"; + hardware.cpu.amd.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware; +} diff --git a/hosts/nixarawrui/modules/amdgpu-ignore-ctx-privileges.nix b/hosts/nixarawrui/modules/amdgpu-ignore-ctx-privileges.nix new file mode 100644 index 0000000..8498061 --- /dev/null +++ b/hosts/nixarawrui/modules/amdgpu-ignore-ctx-privileges.nix @@ -0,0 +1,32 @@ +{ + pkgs, + lib, + config, + ... +}: let + enabled = config.boot.kernelPatchesOptions.amd-ignore-ctx-privileges; +in { + options = { + boot.kernelPatchesOptions.amd-ignore-ctx-privileges = + lib.mkEnableOption "amd-ignore-ctx-privileges"; + }; + + config = lib.mkIf enabled { + nixpkgs.overlays = [ + (self: super: { + amdgpu-ignore-ctx-privileges = super.fetchpatch { + name = "cap_sys_nice_begone.patch"; + url = "https://github.com/Frogging-Family/community-patches/raw/master/linux61-tkg/cap_sys_nice_begone.mypatch"; + hash = "sha256-Y3a0+x2xvHsfLax/uwycdJf3xLxvVfkfDVqjkxNaYEo="; + }; + }) + ]; + + boot.kernelPatches = [ + { + name = "amdgpu-ignore-ctx-privileges"; + patch = pkgs.amdgpu-ignore-ctx-privileges; + } + ]; + }; +} diff --git a/overlays.nix b/overlays.nix new file mode 100644 index 0000000..8d28bdd --- /dev/null +++ b/overlays.nix @@ -0,0 +1,13 @@ + (self: super: { + ekphos = import ../packages/ekphos { + pkgs = super; + }; + + element-desktop = super.element-desktop.overrideAttrs (final: prev: { + desktopItems = [ + ((builtins.elemAt prev.desktopItems 0).override { + exec = "element-desktop %u --password-store=\"gnome-libsecret\""; + }) + ]; + }); + }) From 5fd590a8bfcd932fc8332d5b84a7c9e4513fd084 Mon Sep 17 00:00:00 2001 From: foxora Date: Thu, 12 Feb 2026 18:59:36 +0000 Subject: [PATCH 03/36] readme not mine grr --- README.md | 84 ++----------------------------------------------------- 1 file changed, 3 insertions(+), 81 deletions(-) diff --git a/README.md b/README.md index 36d887e..fa4252b 100644 --- a/README.md +++ b/README.md @@ -1,83 +1,5 @@ -## My NixOS Flake -### Philosophy -> [!TODO] My philosophy has kinda changed since the beginning +# hai :3 -### Repo Structure -Modules are organised into groups (ie "Core"), from here a module is structured as either: -1. a single `.nix` file (ie bluetooth.nix). I do this when I won't implement an alternative -2. a directory (ie `sound`) containing a set of alternative implementations and a `default.nix` -that simply imports one of the implementations. For the `sound` example I currently have it structured -to default to `pipewire.nix`. I haven't made alternatives yet but the idea is that it is HIGHLY likely -I do in future. +that wasn't my readme, blame 🦋 :3 -### Security Considerations -###### Hashing -For services where password hashing is done infrequently (ie my forgejo instance with signups disabled) -use argon2 (argon2id) with default `argon2$2$65536$8$50` (typically). Otherwise bcrypt is preferred. - -### TODO -There are a lot of commented `# TODO: ...` items in this repository. -All (most) of my commented directives can be found via this pattern: -```sh -grep -rnE '^\s*(//|#)\s*[A-Z]*:\s*.+$' --exclude-dir=.git 2>/dev/null -``` - -### Random Explanation of Fonts -There are four types of fonts (to my knowledge at least): -1. serif (funny squigles / small elegant strokes included) -2. sans-serif (meaning "without serifs") -3. monospace (all glyphs are of a uniform size) -4. emoji (cute lil faces) - -Fun fact: on Android, the emojis you are seeing are part of the noto-emoji font :) - -For finding a font for programming I highly recommend trying https://www.codingfont.com/ - - -### Links -#### Inspiration -##### Explaining my Vision with r/unixporn posts -I want the side panel from https://www.reddit.com/r/unixporn/comments/12wpvyf/hyprland_eww_is_all_i_need/ -but not the colour scheme and I'm 50/50 on the bar being on th eleft side lol. Also I love the volume bar on the right! - -https://www.reddit.com/r/unixporn/comments/12uy6q6/hyprland_first_time_trying_a_wm_ended_up/ -I love love love their rofi theme, everything else is eh (except the background switching is cool) - -https://www.reddit.com/r/unixporn/comments/1avnfjn/hyprland_animations_theme_generation_settings/ -I love their settings apps - -https://www.reddit.com/r/unixporn/comments/u7vgej/desktop_endeavouros_gnome_42/ -I like to imagine they have the ability to have nothing but apps on their screen (like a do not disturb / focus mode) - -https://www.reddit.com/r/unixporn/comments/xkvmhy/hyprland_dreamy/ -Their window decorations and bar are great, also being able to hide everything upwards is so cool - -https://www.reddit.com/r/unixporn/comments/vkcasz/i3gaps_i_prefer_light_mode/ -If their colour scheme was a little less white I'd love it but overall one of my favourites every - -##### Other Inspiring Shtuff -1. https://github.com/sabrehagen/desktop-environment - -#### Wallpaper Sources -1. https://www.wallpaperflare.com/ -2. https://alphacoders.com - especially this one person: https://alphacoders.com/users/profile/69089/robokoboto - and also the lofi category: https://alphacoders.com/lofi - -#### Teach Yourself Nix -1. https://github.com/XNM1/linux-nixos-hyprland-config-dotfiles) - Really good security oriented NixOS stuff -2. https://jade.fyi/blog/flakes-arent-real/ - Interesting blog post on using flakes - -#### Credits -1. https://github.com/XNM1/linux-nixos-hyprland-config-dotfiles - The simplicity of their layout is amazing, was really good to pick out small modules and learn how something works / is configured. -2. https://github.com/Misterio77/nix-starter-configs - Really great starter config for learning how parts interact and how to generally structure flakes -3. https://nixos.wiki/wiki/Fonts - Wiki page explaining how to install fonts and nerd fonts on NixOS -4. https://github.com/adi1090x/rofi - For the Rofi theme -5. https://github.com/zDyanTB/HyprNova - For the really cool hyprlock theme +its messy rn TwT From d53a3627c232ab4570af5e3e61719cbceef7ea23 Mon Sep 17 00:00:00 2001 From: foxora Date: Thu, 12 Feb 2026 18:59:36 +0000 Subject: [PATCH 04/36] readme not mine grr --- README.md | 84 ++----------------------------------------------------- 1 file changed, 3 insertions(+), 81 deletions(-) diff --git a/README.md b/README.md index 36d887e..fa4252b 100644 --- a/README.md +++ b/README.md @@ -1,83 +1,5 @@ -## My NixOS Flake -### Philosophy -> [!TODO] My philosophy has kinda changed since the beginning +# hai :3 -### Repo Structure -Modules are organised into groups (ie "Core"), from here a module is structured as either: -1. a single `.nix` file (ie bluetooth.nix). I do this when I won't implement an alternative -2. a directory (ie `sound`) containing a set of alternative implementations and a `default.nix` -that simply imports one of the implementations. For the `sound` example I currently have it structured -to default to `pipewire.nix`. I haven't made alternatives yet but the idea is that it is HIGHLY likely -I do in future. +that wasn't my readme, blame 🦋 :3 -### Security Considerations -###### Hashing -For services where password hashing is done infrequently (ie my forgejo instance with signups disabled) -use argon2 (argon2id) with default `argon2$2$65536$8$50` (typically). Otherwise bcrypt is preferred. - -### TODO -There are a lot of commented `# TODO: ...` items in this repository. -All (most) of my commented directives can be found via this pattern: -```sh -grep -rnE '^\s*(//|#)\s*[A-Z]*:\s*.+$' --exclude-dir=.git 2>/dev/null -``` - -### Random Explanation of Fonts -There are four types of fonts (to my knowledge at least): -1. serif (funny squigles / small elegant strokes included) -2. sans-serif (meaning "without serifs") -3. monospace (all glyphs are of a uniform size) -4. emoji (cute lil faces) - -Fun fact: on Android, the emojis you are seeing are part of the noto-emoji font :) - -For finding a font for programming I highly recommend trying https://www.codingfont.com/ - - -### Links -#### Inspiration -##### Explaining my Vision with r/unixporn posts -I want the side panel from https://www.reddit.com/r/unixporn/comments/12wpvyf/hyprland_eww_is_all_i_need/ -but not the colour scheme and I'm 50/50 on the bar being on th eleft side lol. Also I love the volume bar on the right! - -https://www.reddit.com/r/unixporn/comments/12uy6q6/hyprland_first_time_trying_a_wm_ended_up/ -I love love love their rofi theme, everything else is eh (except the background switching is cool) - -https://www.reddit.com/r/unixporn/comments/1avnfjn/hyprland_animations_theme_generation_settings/ -I love their settings apps - -https://www.reddit.com/r/unixporn/comments/u7vgej/desktop_endeavouros_gnome_42/ -I like to imagine they have the ability to have nothing but apps on their screen (like a do not disturb / focus mode) - -https://www.reddit.com/r/unixporn/comments/xkvmhy/hyprland_dreamy/ -Their window decorations and bar are great, also being able to hide everything upwards is so cool - -https://www.reddit.com/r/unixporn/comments/vkcasz/i3gaps_i_prefer_light_mode/ -If their colour scheme was a little less white I'd love it but overall one of my favourites every - -##### Other Inspiring Shtuff -1. https://github.com/sabrehagen/desktop-environment - -#### Wallpaper Sources -1. https://www.wallpaperflare.com/ -2. https://alphacoders.com - especially this one person: https://alphacoders.com/users/profile/69089/robokoboto - and also the lofi category: https://alphacoders.com/lofi - -#### Teach Yourself Nix -1. https://github.com/XNM1/linux-nixos-hyprland-config-dotfiles) - Really good security oriented NixOS stuff -2. https://jade.fyi/blog/flakes-arent-real/ - Interesting blog post on using flakes - -#### Credits -1. https://github.com/XNM1/linux-nixos-hyprland-config-dotfiles - The simplicity of their layout is amazing, was really good to pick out small modules and learn how something works / is configured. -2. https://github.com/Misterio77/nix-starter-configs - Really great starter config for learning how parts interact and how to generally structure flakes -3. https://nixos.wiki/wiki/Fonts - Wiki page explaining how to install fonts and nerd fonts on NixOS -4. https://github.com/adi1090x/rofi - For the Rofi theme -5. https://github.com/zDyanTB/HyprNova - For the really cool hyprlock theme +its messy rn TwT From 59735769705f6f2a9580c892a50d9f34029aa942 Mon Sep 17 00:00:00 2001 From: foxora Date: Thu, 12 Feb 2026 19:05:30 +0000 Subject: [PATCH 05/36] changed nix aliases --- homes/modules/shell/zsh.nix | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/homes/modules/shell/zsh.nix b/homes/modules/shell/zsh.nix index 675395e..f1d5e47 100644 --- a/homes/modules/shell/zsh.nix +++ b/homes/modules/shell/zsh.nix @@ -59,11 +59,14 @@ in cdns = "cd /etc/nixos"; # cd to /etc/nixos and edit nix config # description: ns = nix settings - ns = "cdns && sudo -E -s $EDITOR"; + ns = "cdns && $EDITOR"; + + # NOTE: commands need --accept-flake-config as Cerulean uses + # experimental features # description: nrs = nix rebuild switch - nrs = "cdns && nh os switch /etc/nixos"; + switch = "cdns && nh os switch /etc/nixos --accept-flake-config"; # upgrades the system - upgrade = "cdns && sudo nix flake update && nh os switch /etc/nixos"; + upgrade = "cdns && nix flake update && nh os switch ./ --accept-flake-config"; # kitty's ssh command (to fix xterm and other stuff qwq) kssh = "kitty +kitten ssh"; From 98ea4ff5826a5bf315259a6bb78dfaa425e55b00 Mon Sep 17 00:00:00 2001 From: foxora Date: Thu, 12 Feb 2026 19:05:30 +0000 Subject: [PATCH 06/36] changed nix aliases --- homes/modules/shell/zsh.nix | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/homes/modules/shell/zsh.nix b/homes/modules/shell/zsh.nix index 675395e..f1d5e47 100644 --- a/homes/modules/shell/zsh.nix +++ b/homes/modules/shell/zsh.nix @@ -59,11 +59,14 @@ in cdns = "cd /etc/nixos"; # cd to /etc/nixos and edit nix config # description: ns = nix settings - ns = "cdns && sudo -E -s $EDITOR"; + ns = "cdns && $EDITOR"; + + # NOTE: commands need --accept-flake-config as Cerulean uses + # experimental features # description: nrs = nix rebuild switch - nrs = "cdns && nh os switch /etc/nixos"; + switch = "cdns && nh os switch /etc/nixos --accept-flake-config"; # upgrades the system - upgrade = "cdns && sudo nix flake update && nh os switch /etc/nixos"; + upgrade = "cdns && nix flake update && nh os switch ./ --accept-flake-config"; # kitty's ssh command (to fix xterm and other stuff qwq) kssh = "kitty +kitten ssh"; From d79a9caecf00fff2c9c7b288b72c7c023d5d1c65 Mon Sep 17 00:00:00 2001 From: foxora Date: Thu, 12 Feb 2026 20:27:23 +0000 Subject: [PATCH 07/36] idk why it didnt change --- homes/aurora/default.nix | 2 +- homes/modules/shell/zsh.nix | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/homes/aurora/default.nix b/homes/aurora/default.nix index 072790f..163ff2a 100644 --- a/homes/aurora/default.nix +++ b/homes/aurora/default.nix @@ -1,4 +1,4 @@ -# aurora's configgg!! :333homnix +# aurora's configgg!! :333 # trans <3 { inputs, diff --git a/homes/modules/shell/zsh.nix b/homes/modules/shell/zsh.nix index f1d5e47..dcae264 100644 --- a/homes/modules/shell/zsh.nix +++ b/homes/modules/shell/zsh.nix @@ -56,7 +56,7 @@ in nd = "nix develop -c $SHELL"; # description: cdns = change directory [to] nix settings - cdns = "cd /etc/nixos"; + cdns = "cd ~/.nix"; # cd to /etc/nixos and edit nix config # description: ns = nix settings ns = "cdns && $EDITOR"; @@ -64,7 +64,7 @@ in # NOTE: commands need --accept-flake-config as Cerulean uses # experimental features # description: nrs = nix rebuild switch - switch = "cdns && nh os switch /etc/nixos --accept-flake-config"; + switch = "cdns && nh os switch ~/.nix --accept-flake-config"; # upgrades the system upgrade = "cdns && nix flake update && nh os switch ./ --accept-flake-config"; From 849dd143161eaca943a73f58e6d89d4d46448e78 Mon Sep 17 00:00:00 2001 From: foxora Date: Thu, 12 Feb 2026 20:27:23 +0000 Subject: [PATCH 08/36] idk why it didnt change --- homes/aurora/default.nix | 2 +- homes/modules/shell/zsh.nix | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/homes/aurora/default.nix b/homes/aurora/default.nix index 072790f..163ff2a 100644 --- a/homes/aurora/default.nix +++ b/homes/aurora/default.nix @@ -1,4 +1,4 @@ -# aurora's configgg!! :333homnix +# aurora's configgg!! :333 # trans <3 { inputs, diff --git a/homes/modules/shell/zsh.nix b/homes/modules/shell/zsh.nix index f1d5e47..dcae264 100644 --- a/homes/modules/shell/zsh.nix +++ b/homes/modules/shell/zsh.nix @@ -56,7 +56,7 @@ in nd = "nix develop -c $SHELL"; # description: cdns = change directory [to] nix settings - cdns = "cd /etc/nixos"; + cdns = "cd ~/.nix"; # cd to /etc/nixos and edit nix config # description: ns = nix settings ns = "cdns && $EDITOR"; @@ -64,7 +64,7 @@ in # NOTE: commands need --accept-flake-config as Cerulean uses # experimental features # description: nrs = nix rebuild switch - switch = "cdns && nh os switch /etc/nixos --accept-flake-config"; + switch = "cdns && nh os switch ~/.nix --accept-flake-config"; # upgrades the system upgrade = "cdns && nix flake update && nh os switch ./ --accept-flake-config"; From 43b04c3f8a41df9ad0b00b7c9fe68402602e7c74 Mon Sep 17 00:00:00 2001 From: foxora Date: Thu, 12 Feb 2026 20:31:58 +0000 Subject: [PATCH 09/36] somehow did it wrong and only just noticed :3 --- homes/modules/shell/zsh.nix | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/homes/modules/shell/zsh.nix b/homes/modules/shell/zsh.nix index dcae264..3c161f6 100644 --- a/homes/modules/shell/zsh.nix +++ b/homes/modules/shell/zsh.nix @@ -44,9 +44,10 @@ in # init github keys # description: gi = github initialize - sa = "eval \"$(ssh-agent -s)\""; + sai = "eval \"$(ssh-agent -s)\""; gh-auv = "ssh-add ~/.ssh/github_auroraveon"; cb-fox = "ssh-add ~/.ssh/codeberg_foxxyora"; + tf-fox = "ssh-add ~/.ssh/tearforge_foxora"; # -------------------- # shorthand nix command aliases From 39e5c40e12659683bb37d6f312cc07ef545332b8 Mon Sep 17 00:00:00 2001 From: foxora Date: Thu, 12 Feb 2026 20:31:58 +0000 Subject: [PATCH 10/36] somehow did it wrong and only just noticed :3 --- homes/modules/shell/zsh.nix | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/homes/modules/shell/zsh.nix b/homes/modules/shell/zsh.nix index dcae264..3c161f6 100644 --- a/homes/modules/shell/zsh.nix +++ b/homes/modules/shell/zsh.nix @@ -44,9 +44,10 @@ in # init github keys # description: gi = github initialize - sa = "eval \"$(ssh-agent -s)\""; + sai = "eval \"$(ssh-agent -s)\""; gh-auv = "ssh-add ~/.ssh/github_auroraveon"; cb-fox = "ssh-add ~/.ssh/codeberg_foxxyora"; + tf-fox = "ssh-add ~/.ssh/tearforge_foxora"; # -------------------- # shorthand nix command aliases From 2c65ddecc2d8e957b49bbd2e06065f7f185e2172 Mon Sep 17 00:00:00 2001 From: foxora Date: Fri, 13 Feb 2026 12:51:16 +0000 Subject: [PATCH 11/36] rofi theme finally!!! :3 --- homes/modules/de/rofi/ichigo.rasi | 142 ++++++++++++++++++ homes/modules/de/rofi/rofi.nix | 2 +- homes/modules/de/rofi/theme.rasi | 0 .../wallust/templates/rofi-template.rasi | 20 +++ homes/modules/themeing/wallust/wallust.toml | 3 + homes/modules/wm/hyprland/hyprland.nix | 7 +- 6 files changed, 171 insertions(+), 3 deletions(-) create mode 100644 homes/modules/de/rofi/ichigo.rasi delete mode 100644 homes/modules/de/rofi/theme.rasi create mode 100644 homes/modules/themeing/wallust/templates/rofi-template.rasi diff --git a/homes/modules/de/rofi/ichigo.rasi b/homes/modules/de/rofi/ichigo.rasi new file mode 100644 index 0000000..c2706fd --- /dev/null +++ b/homes/modules/de/rofi/ichigo.rasi @@ -0,0 +1,142 @@ +configuration { + modes: [ combi ]; + combi-modes: [ window, drun, run ]; +} + +@theme "colors" + +window { + background-color: @background; + border-color: @color10; + border-radius: 12px; + border: 2; + padding: 16; + transparency: "real"; + opacity: 90; +} + +mainbox { + background-color: transparent; + opacity: 90; + border: 0; +} + +message { + border: 2px 0px 0px; + border-color: @color14; + padding: 1px; +} + +inputbar { + background-color: transparent; + text-color: @foreground; + spacing: 8; +} +textbox { + background-color: @background; + text-color: @foreground; +} + +prompt { + background-color: transparent; + text-color: @color12; +} + +entry { + placeholder: "~ rawr :3 ~ *pounces on u* <3 ~ >w< ~"; + cursor: pointer; + background-color: transparent; + text-color: @color13; +} + +case-indicator { + background-color: transparent; + text-color: @color12; +} + +listview { + fixed-height: 0; + border: 2px 0px 0px; + border-color: transparent; + background-color: transparent; + spacing: 2px; + scrollbar: true; + padding: 2px 0px 0px; +} + +element { + orientation: horizontal; + spacing: 8; + border: 0; + border-radius: 4; +} + +element-icon { + size: 24; +} + +element-text { + vertical-align: 0.5; +} + +element.normal.normal { + background-color: transparent; + text-color: @foreground; +} +element.alternate.normal { + background-color: transparent; + text-color: @color06; +} +element.selected.normal { + background-color: @color13; + text-color: @background; +} + +element.normal.urgent { + background-color: @color14; + text-color: @background; +} +element.alternate.urgent { + background-color: transparent; + text-color: @color14; +} +element.selected.urgent { + background-color: @color13; + text-color: @background; +} + +element.normal.active { + background-color: @color12; + text-color: @background; +} +element.alternate.active { + background-color: @background; + text-color: @color14; +} +element.selected.active { + background-color: @color13; + text-color: @background; +} + +element-text, element-icon { + background-color: inherit; + text-color: inherit; +} + +button.selected { + background-color: transparent; + text-color: @foreground; +} + +scrollbar { + background-color: transparent; + handle-color: @color12; + width: 4px; + border: 0; + handle-width: 8px; + padding: 0; +} +mode-switcher { + border: 2px 0px 0px ; + border-color: @color14; +} diff --git a/homes/modules/de/rofi/rofi.nix b/homes/modules/de/rofi/rofi.nix index 33d75fa..fe952eb 100644 --- a/homes/modules/de/rofi/rofi.nix +++ b/homes/modules/de/rofi/rofi.nix @@ -7,7 +7,7 @@ in enable = true; font = "DepartureMono Nerd Font Mono 10"; - theme = ./theme.rasi; + theme = ./ichigo.rasi; extraConfig = { #kb-row-up = "Up,Control+k"; diff --git a/homes/modules/de/rofi/theme.rasi b/homes/modules/de/rofi/theme.rasi deleted file mode 100644 index e69de29..0000000 diff --git a/homes/modules/themeing/wallust/templates/rofi-template.rasi b/homes/modules/themeing/wallust/templates/rofi-template.rasi new file mode 100644 index 0000000..d126a4d --- /dev/null +++ b/homes/modules/themeing/wallust/templates/rofi-template.rasi @@ -0,0 +1,20 @@ +* { + background: rgba({{ background | rgb }},0.9); + foreground: rgba({{ foreground | rgb }},0.9); + color00: rgba({{ color0 | rgb }},0.9); + color01: rgba({{ color1 | rgb }},0.9); + color02: rgba({{ color2 | rgb }},0.9); + color03: rgba({{ color3 | rgb }},0.9); + color04: rgba({{ color4 | rgb }},0.9); + color05: rgba({{ color5 | rgb }},0.9); + color06: rgba({{ color6 | rgb }},0.9); + color07: rgba({{ color7 | rgb }},0.9); + color08: rgba({{ color8 | rgb }},0.9); + color09: rgba({{ color9 | rgb }},0.9); + color10: rgba({{ color10 | rgb }},0.9); + color11: rgba({{ color11 | rgb }},0.9); + color12: rgba({{ color12 | rgb }},0.9); + color13: rgba({{ color13 | rgb }},0.9); + color14: rgba({{ color14 | rgb }},0.9); + color15: rgba({{ color15 | rgb }},0.9); +} diff --git a/homes/modules/themeing/wallust/wallust.toml b/homes/modules/themeing/wallust/wallust.toml index efff412..ff82190 100644 --- a/homes/modules/themeing/wallust/wallust.toml +++ b/homes/modules/themeing/wallust/wallust.toml @@ -22,6 +22,9 @@ hyprland.target = "~/.config/hypr/colors.conf" waybar.template = "waybar-template.css" waybar.target = "~/.config/waybar/colors.css" +rofi.template = "rofi-template.rasi" +rofi.target = "~/.config/rofi/colors.rasi" + neovim.template = "neovim-template" neovim.target = "~/.cache/nvim/neovim-colors" diff --git a/homes/modules/wm/hyprland/hyprland.nix b/homes/modules/wm/hyprland/hyprland.nix index 0d9764c..48c670e 100644 --- a/homes/modules/wm/hyprland/hyprland.nix +++ b/homes/modules/wm/hyprland/hyprland.nix @@ -283,12 +283,15 @@ in ]; layerrule = [ - #"blur, rofi" - #"ignorezero, rofi" #"blur, aurorashell" #"ignorealpha 0.7, aurorashell" + "blur on, match:namespace waybar" "ignore_alpha 0, match:namespace waybar" + + "blur on, match:namespace rofi" + "xray on, match:namespace rofi" + "ignore_alpha 0, match:namespace rofi" ]; env = [ From 6459631d5c60a2962080949a5d963e0e55441d0c Mon Sep 17 00:00:00 2001 From: foxora Date: Fri, 13 Feb 2026 12:51:16 +0000 Subject: [PATCH 12/36] rofi theme finally!!! :3 --- homes/modules/de/rofi/ichigo.rasi | 142 ++++++++++++++++++ homes/modules/de/rofi/rofi.nix | 2 +- homes/modules/de/rofi/theme.rasi | 0 .../wallust/templates/rofi-template.rasi | 20 +++ homes/modules/themeing/wallust/wallust.toml | 3 + homes/modules/wm/hyprland/hyprland.nix | 7 +- 6 files changed, 171 insertions(+), 3 deletions(-) create mode 100644 homes/modules/de/rofi/ichigo.rasi delete mode 100644 homes/modules/de/rofi/theme.rasi create mode 100644 homes/modules/themeing/wallust/templates/rofi-template.rasi diff --git a/homes/modules/de/rofi/ichigo.rasi b/homes/modules/de/rofi/ichigo.rasi new file mode 100644 index 0000000..c2706fd --- /dev/null +++ b/homes/modules/de/rofi/ichigo.rasi @@ -0,0 +1,142 @@ +configuration { + modes: [ combi ]; + combi-modes: [ window, drun, run ]; +} + +@theme "colors" + +window { + background-color: @background; + border-color: @color10; + border-radius: 12px; + border: 2; + padding: 16; + transparency: "real"; + opacity: 90; +} + +mainbox { + background-color: transparent; + opacity: 90; + border: 0; +} + +message { + border: 2px 0px 0px; + border-color: @color14; + padding: 1px; +} + +inputbar { + background-color: transparent; + text-color: @foreground; + spacing: 8; +} +textbox { + background-color: @background; + text-color: @foreground; +} + +prompt { + background-color: transparent; + text-color: @color12; +} + +entry { + placeholder: "~ rawr :3 ~ *pounces on u* <3 ~ >w< ~"; + cursor: pointer; + background-color: transparent; + text-color: @color13; +} + +case-indicator { + background-color: transparent; + text-color: @color12; +} + +listview { + fixed-height: 0; + border: 2px 0px 0px; + border-color: transparent; + background-color: transparent; + spacing: 2px; + scrollbar: true; + padding: 2px 0px 0px; +} + +element { + orientation: horizontal; + spacing: 8; + border: 0; + border-radius: 4; +} + +element-icon { + size: 24; +} + +element-text { + vertical-align: 0.5; +} + +element.normal.normal { + background-color: transparent; + text-color: @foreground; +} +element.alternate.normal { + background-color: transparent; + text-color: @color06; +} +element.selected.normal { + background-color: @color13; + text-color: @background; +} + +element.normal.urgent { + background-color: @color14; + text-color: @background; +} +element.alternate.urgent { + background-color: transparent; + text-color: @color14; +} +element.selected.urgent { + background-color: @color13; + text-color: @background; +} + +element.normal.active { + background-color: @color12; + text-color: @background; +} +element.alternate.active { + background-color: @background; + text-color: @color14; +} +element.selected.active { + background-color: @color13; + text-color: @background; +} + +element-text, element-icon { + background-color: inherit; + text-color: inherit; +} + +button.selected { + background-color: transparent; + text-color: @foreground; +} + +scrollbar { + background-color: transparent; + handle-color: @color12; + width: 4px; + border: 0; + handle-width: 8px; + padding: 0; +} +mode-switcher { + border: 2px 0px 0px ; + border-color: @color14; +} diff --git a/homes/modules/de/rofi/rofi.nix b/homes/modules/de/rofi/rofi.nix index 33d75fa..fe952eb 100644 --- a/homes/modules/de/rofi/rofi.nix +++ b/homes/modules/de/rofi/rofi.nix @@ -7,7 +7,7 @@ in enable = true; font = "DepartureMono Nerd Font Mono 10"; - theme = ./theme.rasi; + theme = ./ichigo.rasi; extraConfig = { #kb-row-up = "Up,Control+k"; diff --git a/homes/modules/de/rofi/theme.rasi b/homes/modules/de/rofi/theme.rasi deleted file mode 100644 index e69de29..0000000 diff --git a/homes/modules/themeing/wallust/templates/rofi-template.rasi b/homes/modules/themeing/wallust/templates/rofi-template.rasi new file mode 100644 index 0000000..d126a4d --- /dev/null +++ b/homes/modules/themeing/wallust/templates/rofi-template.rasi @@ -0,0 +1,20 @@ +* { + background: rgba({{ background | rgb }},0.9); + foreground: rgba({{ foreground | rgb }},0.9); + color00: rgba({{ color0 | rgb }},0.9); + color01: rgba({{ color1 | rgb }},0.9); + color02: rgba({{ color2 | rgb }},0.9); + color03: rgba({{ color3 | rgb }},0.9); + color04: rgba({{ color4 | rgb }},0.9); + color05: rgba({{ color5 | rgb }},0.9); + color06: rgba({{ color6 | rgb }},0.9); + color07: rgba({{ color7 | rgb }},0.9); + color08: rgba({{ color8 | rgb }},0.9); + color09: rgba({{ color9 | rgb }},0.9); + color10: rgba({{ color10 | rgb }},0.9); + color11: rgba({{ color11 | rgb }},0.9); + color12: rgba({{ color12 | rgb }},0.9); + color13: rgba({{ color13 | rgb }},0.9); + color14: rgba({{ color14 | rgb }},0.9); + color15: rgba({{ color15 | rgb }},0.9); +} diff --git a/homes/modules/themeing/wallust/wallust.toml b/homes/modules/themeing/wallust/wallust.toml index efff412..ff82190 100644 --- a/homes/modules/themeing/wallust/wallust.toml +++ b/homes/modules/themeing/wallust/wallust.toml @@ -22,6 +22,9 @@ hyprland.target = "~/.config/hypr/colors.conf" waybar.template = "waybar-template.css" waybar.target = "~/.config/waybar/colors.css" +rofi.template = "rofi-template.rasi" +rofi.target = "~/.config/rofi/colors.rasi" + neovim.template = "neovim-template" neovim.target = "~/.cache/nvim/neovim-colors" diff --git a/homes/modules/wm/hyprland/hyprland.nix b/homes/modules/wm/hyprland/hyprland.nix index 0d9764c..48c670e 100644 --- a/homes/modules/wm/hyprland/hyprland.nix +++ b/homes/modules/wm/hyprland/hyprland.nix @@ -283,12 +283,15 @@ in ]; layerrule = [ - #"blur, rofi" - #"ignorezero, rofi" #"blur, aurorashell" #"ignorealpha 0.7, aurorashell" + "blur on, match:namespace waybar" "ignore_alpha 0, match:namespace waybar" + + "blur on, match:namespace rofi" + "xray on, match:namespace rofi" + "ignore_alpha 0, match:namespace rofi" ]; env = [ From a5bb1d1cc1645cf2d3900d6522b5f8da286ec841 Mon Sep 17 00:00:00 2001 From: _cry64 Date: Fri, 13 Feb 2026 23:27:35 +1000 Subject: [PATCH 13/36] #1 hater of infinite recursion --- flake.lock | 48 +-- flake.nix | 42 +-- homes/aurora/default.nix | 10 +- homes/modules/de/awww.nix | 16 +- homes/modules/de/hyprlock/hyprlock.nix | 19 +- homes/modules/de/rofi/rofi.nix | 6 +- homes/modules/de/waybar/waybar.nix | 166 +++++---- homes/modules/programs/iamb/iamb.nix | 12 +- homes/modules/programs/neovim/nixcats.nix | 226 ++++++------ homes/modules/programs/nixcord.nix | 241 +++++++------ homes/modules/programs/spicetify.nix | 32 +- homes/modules/programs/yazi/yazi.nix | 160 +++++++-- homes/modules/services/dunst.nix | 30 +- .../modules/services/keepassxc/keepassxc.nix | 13 +- homes/modules/services/pulse/pulse.nix | 10 +- .../services/wireplumber/wireplumber.nix | 3 +- homes/modules/shell/fastfetch/fastfetch.nix | 5 +- homes/modules/shell/programs.nix | 19 +- homes/modules/shell/zellij/zellij.nix | 10 +- homes/modules/shell/zsh.nix | 27 +- homes/modules/themeing/hellwal/hellwal.nix | 14 +- homes/modules/themeing/wallust/wallust.nix | 8 +- homes/modules/wm/hyprland/hyprland.nix | 335 +++++++++--------- homes/modules/wm/river.nix | 84 +++-- homes/modules/wm/sway.nix | 44 ++- hosts/nixarawrui/default.nix | 50 +-- hosts/nixarawrui/hardware-configuration.nix | 83 ++--- .../modules/amdgpu-ignore-ctx-privileges.nix | 24 +- nixpkgs.nix | 28 ++ overlays.nix | 9 + snow.nix | 23 ++ 31 files changed, 946 insertions(+), 851 deletions(-) create mode 100644 nixpkgs.nix create mode 100644 snow.nix diff --git a/flake.lock b/flake.lock index 73d8139..42b3ab7 100644 --- a/flake.lock +++ b/flake.lock @@ -145,7 +145,7 @@ "inputs": { "deploy-rs": "deploy-rs", "nixpkgs": [ - "nixpkgs" + "nixpkgs-unstable" ], "nixpkgs-unstable": [ "nixpkgs-unstable" @@ -156,11 +156,11 @@ ] }, "locked": { - "lastModified": 1770914135, - "narHash": "sha256-gAOwv1il9GUxsS7XGF612Ftm9+cMvd1QOINwJlWpCnQ=", + "lastModified": 1770984934, + "narHash": "sha256-5+/r1CFqmmzUIqZNjrGUjGgF4BxDkQ2NUrKkCsBBE9s=", "owner": "emilelcb", "repo": "Cerulean", - "rev": "b151f45dfbdb0849d3c24940af946f11652dd8bf", + "rev": "3ba385ee25cc02c91fe4c245a734d59c54a1b1df", "type": "github" }, "original": { @@ -455,7 +455,7 @@ "home-manager": { "inputs": { "nixpkgs": [ - "nixpkgs" + "nixpkgs-unstable" ] }, "locked": { @@ -1224,13 +1224,13 @@ "type": "github" } }, - "nixpkgs-unstable": { + "nixpkgs-staging": { "locked": { - "lastModified": 1770914792, - "narHash": "sha256-QpCRgIbupASO9adsg2kFNNUnOIQq0vJ9g6HCxlOA7v8=", + "lastModified": 1770984692, + "narHash": "sha256-n6HUgG2+cvLcQkZEgXu14qgl/SrKC4EZerQXod0HGDg=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "3b285f04c85ceacf7a53cfa21b2f5cb60a2d06e2", + "rev": "e7b82c0fddf16a5e3fee29bbd8e0c8c67158176d", "type": "github" }, "original": { @@ -1240,13 +1240,13 @@ "type": "github" } }, - "nixpkgs_10": { + "nixpkgs-unstable": { "locked": { - "lastModified": 1770562336, - "narHash": "sha256-ub1gpAONMFsT/GU2hV6ZWJjur8rJ6kKxdm9IlCT0j84=", + "lastModified": 1770841267, + "narHash": "sha256-9xejG0KoqsoKEGp2kVbXRlEYtFFcDTHjidiuX8hGO44=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "d6c71932130818840fc8fe9509cf50be8c64634f", + "rev": "ec7c70d12ce2fc37cb92aff673dcdca89d187bae", "type": "github" }, "original": { @@ -1256,7 +1256,7 @@ "type": "github" } }, - "nixpkgs_11": { + "nixpkgs_10": { "locked": { "lastModified": 1770197578, "narHash": "sha256-AYqlWrX09+HvGs8zM6ebZ1pwUqjkfpnv8mewYwAo+iM=", @@ -1272,7 +1272,7 @@ "type": "github" } }, - "nixpkgs_12": { + "nixpkgs_11": { "locked": { "lastModified": 1769461804, "narHash": "sha256-msG8SU5WsBUfVVa/9RPLaymvi5bI8edTavbIq3vRlhI=", @@ -1423,15 +1423,15 @@ "systems": "systems_2" }, "locked": { - "lastModified": 1770911021, - "narHash": "sha256-8FcXBu0CjeeZeq3uW2h/c5AV+hqELuyPiHsUogOSmZM=", - "owner": "emilelcb", + "lastModified": 1770975056, + "narHash": "sha256-ZXTz/P3zUbbM6lNXzt91u8EwfNqhXpYMu8+wvFZqQHE=", + "owner": "cry128", "repo": "nt", - "rev": "471e1617e8cc0bc749712a7a6af2b2e9f988ffbf", + "rev": "f42dcdd49a7921a7f433512e83d5f93696632412", "type": "github" }, "original": { - "owner": "emilelcb", + "owner": "cry128", "repo": "nt", "type": "github" } @@ -1489,7 +1489,7 @@ "nix-alien": "nix-alien", "nixcats": "nixcats", "nixcord": "nixcord", - "nixpkgs": "nixpkgs_10", + "nixpkgs-staging": "nixpkgs-staging", "nixpkgs-unstable": "nixpkgs-unstable", "sddm-silent": "sddm-silent", "spicetify-nix": "spicetify-nix", @@ -1538,7 +1538,7 @@ "sddm-silent": { "inputs": { "nixpkgs": [ - "nixpkgs" + "nixpkgs-unstable" ] }, "locked": { @@ -1557,7 +1557,7 @@ }, "spicetify-nix": { "inputs": { - "nixpkgs": "nixpkgs_11", + "nixpkgs": "nixpkgs_10", "systems": "systems_5" }, "locked": { @@ -1766,7 +1766,7 @@ "zen": { "inputs": { "home-manager": "home-manager_2", - "nixpkgs": "nixpkgs_12" + "nixpkgs": "nixpkgs_11" }, "locked": { "lastModified": 1770910552, diff --git a/flake.nix b/flake.nix index 4184706..09bf215 100644 --- a/flake.nix +++ b/flake.nix @@ -5,19 +5,19 @@ systems.url = "github:nix-systems/default"; # WARNING: don't remove duplicate!! (cry64 will fix) - nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable"; - nixpkgs-unstable.url = "github:NixOS/nixpkgs/staging-next"; + nixpkgs-unstable.url = "github:NixOS/nixpkgs/nixos-unstable"; + nixpkgs-staging.url = "github:NixOS/nixpkgs/staging-next"; home-manager = { url = "github:nix-community/home-manager/master"; - inputs.nixpkgs.follows = "nixpkgs"; + inputs.nixpkgs.follows = "nixpkgs-unstable"; }; cerulean = { url = "github:emilelcb/Cerulean"; inputs = { systems.follows = "systems"; - nixpkgs.follows = "nixpkgs"; + nixpkgs.follows = "nixpkgs-unstable"; nixpkgs-unstable.follows = "nixpkgs-unstable"; }; }; @@ -51,7 +51,7 @@ # temp theme until i bother creating my own -python3 extraPython3Packages = { - test = (_:[]); + test = _: []; }; # populates $LUA_PATH and $LUA_CPATH extraLuaPackages = { - test = [ (_:[]) ]; + test = [(_: [])]; }; - }); + }; # see :help nixCats.flake.outputs.packageDefinitions packageDefinitions.replace = { # these are the names of your packages # you can include as many as you wish. - auroranvim = {pkgs , ... }: { + auroranvim = {pkgs, ...}: { # they contain a settings set defined above # see :help nixCats.flake.outputs.settings settings = { wrapRc = true; # IMPORTANT: # your alias may not conflict with your other packages. - aliases = [ "auroravim" "auravim" "foxyvim" "avix" "fvix" "auim" ]; + aliases = ["auroravim" "auravim" "foxyvim" "avix" "fvix" "auim"]; }; # and a set of categories that you want # (and other information to pass to lua) categories = { general = true; - ui = true; - qol = true; - telescope = true; - fyler = true; - lsp = true; - completion = true; - treesitter = true; - discord = false; + ui = true; + qol = true; + telescope = true; + fyler = true; + lsp = true; + completion = true; + treesitter = true; + discord = false; - lang = { - lua = true; - nix = true; - rust = true; - zig = true; - elixir = true; - gleam = true; - java = true; - }; + lang = { + lua = true; + nix = true; + rust = true; + zig = true; + elixir = true; + gleam = true; + java = true; + }; }; }; }; diff --git a/homes/modules/programs/nixcord.nix b/homes/modules/programs/nixcord.nix index d1d9e2b..7e22a19 100644 --- a/homes/modules/programs/nixcord.nix +++ b/homes/modules/programs/nixcord.nix @@ -1,5 +1,4 @@ -{ config, inputs, lib, pkgs, ... }: -{ +{inputs, ...}: { imports = [ inputs.nixcord.homeModules.nixcord ]; @@ -20,125 +19,125 @@ ]; plugins = { anonymiseFileNames = { - enable = true; - anonymiseByDefault = true; - method = 0; - randomisedLength = 16; - }; - betterSessions = { - backgroundCheck = true; - checkInterval = 1; - }; - biggerStreamPreview.enable = true; - callTimer.enable = true; - fixYoutubeEmbeds.enable = true; - fixSpotifyEmbeds.enable = true; - tidalEmbeds.enable = true; - youtubeAdblock.enable = true; - followVoiceUser.enable = true; - friendsSince.enable = true; - ircColors = { - enable = true; - lightness = 80; - memberListColors = true; - applyColorOnlyInDms = false; - applyColorOnlyToUsersWithoutColor = false; - }; - messageLogger = { - enable = true; - showEditDiffs = true; - separatedDiffs = false; - }; - fakeNitro.enable = true; - ghosted.enable = true; - noF1.enable = true; - noMaskedUrlPaste.enable = true; - messageLatency = { - enable = false; - latency = -1; - showMillis = true; - }; - openInApp.enable = true; - crashHandler.enable = true; - disableCallIdle.enable = true; - experiments.enable = true; - expressionCloner.enable = true; - favoriteGifSearch.enable = true; - fixImagesQuality.enable = true; - forceOwnerCrown.enable = true; - forwardAnywhere.enable = true; - spotifyCrack.enable = true; - spotifyShareCommands.enable = true; - spotifyControls.enable = true; - fullUserInChatbox.enable = true; - gifPaste.enable = true; - ignoreActivities = { - enable = true; - ignorePlaying = true; - ignoreStreaming = true; - ignoreListening = true; - ignoreWatching = true; - ignoreCompeting = true; - }; - imageLink.enable = true; - imageZoom.enable = true; - memberCount.enable = true; - noDevtoolsWarning.enable = true; - noUnblockToJump.enable = true; - pauseInvitesForever.enable = true; - permissionsViewer.enable = true; - pictureInPicture = { - enable = true; - loop = true; - }; - platformIndicators.enable = true; - previewMessage.enable = true; - relationshipNotifier.enable = true; - revealAllSpoilers.enable = true; - serverInfo.enable = true; - serverListIndicators.enable = true; - showHiddenChannels.enable = true; - showHiddenThings.enable = true; - showTimeoutDuration = { - enable = true; - displayStyle = "tooltip"; - }; - silentTyping = { - enable = true; - enabledGlobally = false; - }; - startupTimings.enable = true; - typingIndicator.enable = true; - unlockedAvatarZoom = { - enable = true; - zoomMultiplier = 4.0; - }; - userMessagesPronouns.enable = true; - validUser.enable = true; - validReply.enable = true; - viewIcons = { - enable = true; - format = "webp"; - imgSize = "4096"; - }; - voiceChatDoubleClick.enable = true; - voiceDownload.enable = true; - voiceMessages = { - enable = true; - noiseSuppression = false; - echoCancellation = true; - }; - volumeBooster.enable = true; - webKeybinds.enable = true; - webScreenShareFixes.enable = true; - whoReacted.enable = true; - whosWatching.enable = true; - quickReply.enable = true; - questCompleter.enable = true; - shikiCodeblocks = { - enable = true; - useDevIcon = "COLOR"; - theme = "https://raw.githubusercontent.com/shikijs/textmate-grammars-themes/2d87559c7601a928b9f7e0f0dda243d2fb6d4499/packages/tm-themes/themes/kanagawa-wave.json"; + enable = true; + anonymiseByDefault = true; + method = 0; + randomisedLength = 16; + }; + betterSessions = { + backgroundCheck = true; + checkInterval = 1; + }; + biggerStreamPreview.enable = true; + callTimer.enable = true; + fixYoutubeEmbeds.enable = true; + fixSpotifyEmbeds.enable = true; + tidalEmbeds.enable = true; + youtubeAdblock.enable = true; + followVoiceUser.enable = true; + friendsSince.enable = true; + ircColors = { + enable = true; + lightness = 80; + memberListColors = true; + applyColorOnlyInDms = false; + applyColorOnlyToUsersWithoutColor = false; + }; + messageLogger = { + enable = true; + showEditDiffs = true; + separatedDiffs = false; + }; + fakeNitro.enable = true; + ghosted.enable = true; + noF1.enable = true; + noMaskedUrlPaste.enable = true; + messageLatency = { + enable = false; + latency = -1; + showMillis = true; + }; + openInApp.enable = true; + crashHandler.enable = true; + disableCallIdle.enable = true; + experiments.enable = true; + expressionCloner.enable = true; + favoriteGifSearch.enable = true; + fixImagesQuality.enable = true; + forceOwnerCrown.enable = true; + forwardAnywhere.enable = true; + spotifyCrack.enable = true; + spotifyShareCommands.enable = true; + spotifyControls.enable = true; + fullUserInChatbox.enable = true; + gifPaste.enable = true; + ignoreActivities = { + enable = true; + ignorePlaying = true; + ignoreStreaming = true; + ignoreListening = true; + ignoreWatching = true; + ignoreCompeting = true; + }; + imageLink.enable = true; + imageZoom.enable = true; + memberCount.enable = true; + noDevtoolsWarning.enable = true; + noUnblockToJump.enable = true; + pauseInvitesForever.enable = true; + permissionsViewer.enable = true; + pictureInPicture = { + enable = true; + loop = true; + }; + platformIndicators.enable = true; + previewMessage.enable = true; + relationshipNotifier.enable = true; + revealAllSpoilers.enable = true; + serverInfo.enable = true; + serverListIndicators.enable = true; + showHiddenChannels.enable = true; + showHiddenThings.enable = true; + showTimeoutDuration = { + enable = true; + displayStyle = "tooltip"; + }; + silentTyping = { + enable = true; + enabledGlobally = false; + }; + startupTimings.enable = true; + typingIndicator.enable = true; + unlockedAvatarZoom = { + enable = true; + zoomMultiplier = 4.0; + }; + userMessagesPronouns.enable = true; + validUser.enable = true; + validReply.enable = true; + viewIcons = { + enable = true; + format = "webp"; + imgSize = "4096"; + }; + voiceChatDoubleClick.enable = true; + voiceDownload.enable = true; + voiceMessages = { + enable = true; + noiseSuppression = false; + echoCancellation = true; + }; + volumeBooster.enable = true; + webKeybinds.enable = true; + webScreenShareFixes.enable = true; + whoReacted.enable = true; + whosWatching.enable = true; + quickReply.enable = true; + questCompleter.enable = true; + shikiCodeblocks = { + enable = true; + useDevIcon = "COLOR"; + theme = "https://raw.githubusercontent.com/shikijs/textmate-grammars-themes/2d87559c7601a928b9f7e0f0dda243d2fb6d4499/packages/tm-themes/themes/kanagawa-wave.json"; }; }; }; diff --git a/homes/modules/programs/spicetify.nix b/homes/modules/programs/spicetify.nix index 896d0b7..7fa740e 100644 --- a/homes/modules/programs/spicetify.nix +++ b/homes/modules/programs/spicetify.nix @@ -1,8 +1,12 @@ -{ inputs, lib, pkgs, ... }: -let - spicetifyPkgs = inputs.spicetify-nix.legacyPackages.${pkgs.stdenv.hostPlatform.system}; +{ + inputs, + upkgs, + system, + ... +}: let + spicetifyPkgs = inputs.spicetify-nix.legacyPackages.${system}; in { - imports = [ inputs.spicetify-nix.homeManagerModules.default ]; + imports = [inputs.spicetify-nix.homeManagerModules.default]; programs.spicetify = { enable = true; @@ -10,15 +14,17 @@ in { adblock shuffle keyboardShortcut - ({ - src = (pkgs.fetchFromGitHub { - owner = "Spikerko"; - repo = "spicy-lyrics"; - rev = "568c83326aa6aba6ded28c95df6fcfb25cab3648"; - hash = "sha256-lej93EDzGkmyrg5YMdPSqzrxlIfKsfaDBZosTvxoTNw="; - }) + /builds; - name = "spicy-lyrics.mjs"; - }) + { + src = + (upkgs.fetchFromGitHub { + owner = "Spikerko"; + repo = "spicy-lyrics"; + rev = "568c83326aa6aba6ded28c95df6fcfb25cab3648"; + hash = "sha256-lej93EDzGkmyrg5YMdPSqzrxlIfKsfaDBZosTvxoTNw="; + }) + + /builds; + name = "spicy-lyrics.mjs"; + } ]; theme = spicetifyPkgs.themes.comfy; colorScheme = "Sakura"; diff --git a/homes/modules/programs/yazi/yazi.nix b/homes/modules/programs/yazi/yazi.nix index 54c26be..9943358 100644 --- a/homes/modules/programs/yazi/yazi.nix +++ b/homes/modules/programs/yazi/yazi.nix @@ -1,8 +1,8 @@ -{ config, inputs, lib, pkgs, ... }: -{ +{upkgs, ...}: { # optional dependencies can be found here: # https://yazi-rs.github.io/docs/installation/ - home.packages = with pkgs; [ # dependencies + home.packages = with upkgs; [ + # dependencies ripdrag ]; @@ -22,9 +22,15 @@ keymap = { mgr.prepend_keymap = [ # drag and drop!! - { on = [ "" ]; run = ''shell "ripdrag -x -a \"$@\"" --confirm''; } + { + on = [""]; + run = ''shell "ripdrag -x -a \"$@\"" --confirm''; + } # copy hovered file to clipboard - { on = [ "" ]; run = ''shell -- path=%h; echo "file://$path" | wl-copy -t text/uri-list''; } + { + on = [""]; + run = ''shell -- path=%h; echo "file://$path" | wl-copy -t text/uri-list''; + } ]; }; @@ -34,36 +40,122 @@ theme = { icon = { dirs = [ - { name = ".config"; text = ""; fg = "red"; } - { name = ".git"; text = ""; fg = "blue"; } - { name = ".github"; text = ""; fg = "blue"; } - { name = ".npm"; text = ""; fg = "blue"; } - { name = "Desktop"; text = ""; fg = "magenta"; } - { name = "Documents"; text = ""; fg = "magenta"; } - { name = "Downloads"; text = ""; fg = "red"; } - { name = "Library"; text = ""; fg = "magenta"; } - { name = "Movies"; text = ""; fg = "magenta"; } - { name = "Music"; text = ""; fg = "magenta"; } - { name = "Pictures"; text = ""; fg = "magenta"; } - { name = "Public"; text = ""; fg = "magenta"; } - { name = "Videos"; text = ""; fg = "red"; } + { + name = ".config"; + text = ""; + fg = "red"; + } + { + name = ".git"; + text = ""; + fg = "blue"; + } + { + name = ".github"; + text = ""; + fg = "blue"; + } + { + name = ".npm"; + text = ""; + fg = "blue"; + } + { + name = "Desktop"; + text = ""; + fg = "magenta"; + } + { + name = "Documents"; + text = ""; + fg = "magenta"; + } + { + name = "Downloads"; + text = ""; + fg = "red"; + } + { + name = "Library"; + text = ""; + fg = "magenta"; + } + { + name = "Movies"; + text = ""; + fg = "magenta"; + } + { + name = "Music"; + text = ""; + fg = "magenta"; + } + { + name = "Pictures"; + text = ""; + fg = "magenta"; + } + { + name = "Public"; + text = ""; + fg = "magenta"; + } + { + name = "Videos"; + text = ""; + fg = "red"; + } ]; - conds = [ - # special files - { "if" = "orphan"; text = ""; } - { "if" = "link"; text = ""; } - { "if" = "block"; text = ""; } - { "if" = "char"; text = ""; } - { "if" = "fifo"; text = ""; } - { "if" = "sock"; text = ""; } - { "if" = "sticky"; text = ""; } - { "if" = "dummy"; text = ""; } + conds = [ + # special files + { + "if" = "orphan"; + text = ""; + } + { + "if" = "link"; + text = ""; + } + { + "if" = "block"; + text = ""; + } + { + "if" = "char"; + text = ""; + } + { + "if" = "fifo"; + text = ""; + } + { + "if" = "sock"; + text = ""; + } + { + "if" = "sticky"; + text = ""; + } + { + "if" = "dummy"; + text = ""; + } - # fallback - { "if" = "dir"; text = ""; fg = "blue"; } - { "if" = "exec"; text = ""; } - { "if" = "!dir"; text = ""; } - ]; + # fallback + { + "if" = "dir"; + text = ""; + fg = "blue"; + } + { + "if" = "exec"; + text = ""; + } + { + "if" = "!dir"; + text = ""; + } + ]; }; }; }; @@ -76,7 +168,7 @@ force = true; text = '' [filechooser] - cmd=${pkgs.xdg-desktop-portal-termfilechooser}/share/xdg-desktop-portal-termfilechooser/yazi-wrapper.sh + cmd=${upkgs.xdg-desktop-portal-termfilechooser}/share/xdg-desktop-portal-termfilechooser/yazi-wrapper.sh default_dir=$HOME env=TERMCMD='kitty --title filechooser' open_mode=suggested diff --git a/homes/modules/services/dunst.nix b/homes/modules/services/dunst.nix index 31c3453..3f70692 100644 --- a/homes/modules/services/dunst.nix +++ b/homes/modules/services/dunst.nix @@ -1,9 +1,5 @@ -{ config, inputs, pkgs, ... }: -let - unstable = inputs.nixpkgs-unstable.legacyPackages.${pkgs.stdenv.hostPlatform.system}; -in -{ - home.packages = with pkgs; [ +{upkgs, ...}: { + home.packages = with upkgs; [ libnotify ]; @@ -12,21 +8,21 @@ in settings = { global = { monitor = "DP-3"; # second monitor - origin = "top-left"; - layer = "top"; # above windows, below fullscreen - offset = "(16, 24)"; + origin = "top-left"; + layer = "top"; # above windows, below fullscreen + offset = "(16, 24)"; - padding = 4; - gap_size = 4; - frame_width = 2; + padding = 4; + gap_size = 4; + frame_width = 2; - font = "DepartureMono Nerd Font 8"; + font = "DepartureMono Nerd Font 8"; - corner_radius = 12; - icon_corner_radius = 12; + corner_radius = 12; + icon_corner_radius = 12; - progress_bar = true; - progress_bar_height = 16; + progress_bar = true; + progress_bar_height = 16; }; }; }; diff --git a/homes/modules/services/keepassxc/keepassxc.nix b/homes/modules/services/keepassxc/keepassxc.nix index 7fd6e49..b669c42 100644 --- a/homes/modules/services/keepassxc/keepassxc.nix +++ b/homes/modules/services/keepassxc/keepassxc.nix @@ -1,20 +1,19 @@ -{ config, inputs, lib, pkgs, ... }: -{ - home.packages = with pkgs; [ +{upkgs, ...}: { + home.packages = with upkgs; [ keepassxc ]; systemd.user.services.keepassxc = { Unit = { Description = "KeePassXC password manager"; - After = [ "graphical-session-pre.target" ]; - PartOf = [ "graphical-session.target" ]; + After = ["graphical-session-pre.target"]; + PartOf = ["graphical-session.target"]; }; Service = { - Description = "${pkgs.keepassxc}/bin/keepassxc"; + Description = "${upkgs.keepassxc}/bin/keepassxc"; Restart = "on-failure"; }; - Install.WantedBy = [ "graphical-session.target" ]; + Install.WantedBy = ["graphical-session.target"]; }; xdg.configFile."keepassxc/keepassxc.ini" = { diff --git a/homes/modules/services/pulse/pulse.nix b/homes/modules/services/pulse/pulse.nix index 59d1fa0..3757fde 100644 --- a/homes/modules/services/pulse/pulse.nix +++ b/homes/modules/services/pulse/pulse.nix @@ -1,7 +1,11 @@ -{ inputs, lib, pkgs, config, osConfig, ... }: -{ +{ + config, + osConfig, + ... +}: { # writes ./client.conf to ~/.config/pulse/client.conf - xdg.configFile."pulse/client.conf".text = builtins.replaceStrings + xdg.configFile."pulse/client.conf".text = + builtins.replaceStrings ["{uid}"] # make sure ur user id is set!!! ["${toString osConfig.users.users.${config.home.username}.uid}"] diff --git a/homes/modules/services/wireplumber/wireplumber.nix b/homes/modules/services/wireplumber/wireplumber.nix index 03e4957..e120486 100644 --- a/homes/modules/services/wireplumber/wireplumber.nix +++ b/homes/modules/services/wireplumber/wireplumber.nix @@ -1,5 +1,4 @@ -{ inputs, lib, pkgs, config, ... }: -{ +{...}: { # writes ./config to ~/.config/wireplumber xdg.configFile."wireplumber" = { recursive = true; diff --git a/homes/modules/shell/fastfetch/fastfetch.nix b/homes/modules/shell/fastfetch/fastfetch.nix index 987f805..1412fcc 100644 --- a/homes/modules/shell/fastfetch/fastfetch.nix +++ b/homes/modules/shell/fastfetch/fastfetch.nix @@ -1,6 +1,5 @@ -{ inputs, lib, pkgs, ... }: -{ - home.packages = with pkgs; [ +{upkgs, ...}: { + home.packages = with upkgs; [ fastfetch # displays system info! x3 ]; diff --git a/homes/modules/shell/programs.nix b/homes/modules/shell/programs.nix index b95007d..2c52a90 100644 --- a/homes/modules/shell/programs.nix +++ b/homes/modules/shell/programs.nix @@ -1,5 +1,4 @@ -{ inputs, lib, pkgs, ... }: -{ +{...}: { programs = { zoxide = { enable = true; @@ -12,14 +11,14 @@ hyfetch = { enable = true; settings = { - preset = "genderfae"; - mode = "rgb"; - backend = "fastfetch"; - color_align = { - mode = "vertical"; - }; - auto_detect_light_dark = true; - pride_month_disable = false; + preset = "genderfae"; + mode = "rgb"; + backend = "fastfetch"; + color_align = { + mode = "vertical"; + }; + auto_detect_light_dark = true; + pride_month_disable = false; }; }; }; diff --git a/homes/modules/shell/zellij/zellij.nix b/homes/modules/shell/zellij/zellij.nix index aa90116..9cd1778 100644 --- a/homes/modules/shell/zellij/zellij.nix +++ b/homes/modules/shell/zellij/zellij.nix @@ -1,8 +1,4 @@ -{ inputs, lib, pkgs, ... }: -let - unstable = inputs.nixpkgs-unstable.legacyPackages.${pkgs.stdenv.hostPlatform.system}; -in -{ +{...}: { # the theme file template for zellij is in wallust programs.zellij = { @@ -10,8 +6,8 @@ in enableZshIntegration = false; extraConfig = '' -theme "test" -show_startup_tips false + theme "test" + show_startup_tips false ''; }; } diff --git a/homes/modules/shell/zsh.nix b/homes/modules/shell/zsh.nix index 3c161f6..d1c9849 100644 --- a/homes/modules/shell/zsh.nix +++ b/homes/modules/shell/zsh.nix @@ -1,8 +1,4 @@ -{ inputs, lib, pkgs, ... }: -let - unstable = inputs.nixpkgs-unstable.legacyPackages.${pkgs.stdenv.hostPlatform.system}; -in -{ +{upkgs, ...}: { programs.zsh = { enable = true; enableCompletion = true; @@ -12,22 +8,22 @@ in plugins = [ { name = "vi-mode"; - src = pkgs.zsh-vi-mode; + src = upkgs.zsh-vi-mode; file = "share/zsh-vi-mode/zsh-vi-mode.plugin.zsh"; } ]; initContent = '' - # yazi wrapper!!! - function yazi() { - local tmp="$(mktemp -p "/run/user/$UID" -t "yazi-cwd.XXXXXX")" cwd - command yazi "$@" --cwd-file="$tmp" - IFS= read -r -d ''' cwd < "$tmp" - [ -n "$cwd" ] && [ "$cwd" != "$PWD" ] && builtin cd -- "$cwd" - rm -f -- "$tmp" - } + # yazi wrapper!!! + function yazi() { + local tmp="$(mktemp -p "/run/user/$UID" -t "yazi-cwd.XXXXXX")" cwd + command yazi "$@" --cwd-file="$tmp" + IFS= read -r -d ''' cwd < "$tmp" + [ -n "$cwd" ] && [ "$cwd" != "$PWD" ] && builtin cd -- "$cwd" + rm -f -- "$tmp" + } - hyfetch # oh i'm so gay!! :3 + hyfetch # oh i'm so gay!! :3 ''; shellAliases = { @@ -87,4 +83,3 @@ in theme = "agnoster"; }; } - diff --git a/homes/modules/themeing/hellwal/hellwal.nix b/homes/modules/themeing/hellwal/hellwal.nix index 4c0d191..4fcf069 100644 --- a/homes/modules/themeing/hellwal/hellwal.nix +++ b/homes/modules/themeing/hellwal/hellwal.nix @@ -1,20 +1,16 @@ -{ config, inputs, lib, pkgs, ... }: -let - unstable = inputs.nixpkgs-unstable.legacyPackages.${pkgs.stdenv.hostPlatform.system}; -in -{ - home.packages = with pkgs; [ +{upkgs, ...}: { + home.packages = with upkgs; [ hellwal ]; # writes ./wallust.toml to ~/.config/hellwal/wallust.toml #xdg.configFile."wallust/wallust.toml" = { - #source = ./wallust.toml; + #source = ./wallust.toml; #}; # writes ./templates to ~/.config/hellwal/templates #xdg.configFile."hellwal/templates" = { - #recursive = true; - #source = ./templates; + #recursive = true; + #source = ./templates; #}; } diff --git a/homes/modules/themeing/wallust/wallust.nix b/homes/modules/themeing/wallust/wallust.nix index 207c4ef..0b92fa3 100644 --- a/homes/modules/themeing/wallust/wallust.nix +++ b/homes/modules/themeing/wallust/wallust.nix @@ -1,9 +1,5 @@ -{ config, inputs, lib, pkgs, ... }: -let - unstable = inputs.nixpkgs-unstable.legacyPackages.${pkgs.stdenv.hostPlatform.system}; -in -{ - home.packages = with pkgs; [ +{upkgs, ...}: { + home.packages = with upkgs; [ wallust ]; diff --git a/homes/modules/wm/hyprland/hyprland.nix b/homes/modules/wm/hyprland/hyprland.nix index 0d9764c..c11fe63 100644 --- a/homes/modules/wm/hyprland/hyprland.nix +++ b/homes/modules/wm/hyprland/hyprland.nix @@ -1,9 +1,4 @@ -{ config, inputs, pkgs, ... }: -let - unstable = inputs.nixpkgs-unstable.legacyPackages.${pkgs.stdenv.hostPlatform.system}; - hyprland-git = inputs.hyprland-git.packages.${pkgs.stdenv.hostPlatform.system}; -in -{ +{...}: { wayland.windowManager.hyprland = { enable = true; package = null; @@ -37,44 +32,44 @@ in # startup programs exec-once = [ - "waybar" - "awww-daemon" + "waybar" + "awww-daemon" - "wl-paste --type text --watch cliphist store" - "wl-paste --type image --watch cliphist store" - "wl-clip-persist --clipboard regular" + "wl-paste --type text --watch cliphist store" + "wl-paste --type image --watch cliphist store" + "wl-clip-persist --clipboard regular" - "playerctld daemon" + "playerctld daemon" # swaps around the 3rd and 4th workspace because they always start - # in the wrong order - "hyprctl dispatch workspace 4 && hyprctl dispatch workspace 5 && hyprctl dispatch workspace 3 && hyprctl dispatch workspace 4 && hyprctl dispatch workspace 5 && hyprctl dispatch workspace 3 && hyprctl dispatch workspace 1" + # in the wrong order + "hyprctl dispatch workspace 4 && hyprctl dispatch workspace 5 && hyprctl dispatch workspace 3 && hyprctl dispatch workspace 4 && hyprctl dispatch workspace 5 && hyprctl dispatch workspace 3 && hyprctl dispatch workspace 1" ]; # monitor configuration monitor = [ - # note: display stream compression pending for open source - # amd gpu driver and my monitor (VG279QM) only supports DP 1.2 - # so no >240hz atm - "DP-2, 1920x1080@239.76, 0x0, 1" # main monitor - "DP-3, 1920x1080@143.61, 1920x0, 1" # second monitor - "HDMI-A-2, 2560x1440@59.95, 3840x0, 1" # third monitor (drawing tablet) - "HDMI-A-1, 1920x1080@60.00, -1920x0, 1" # tv + # note: display stream compression pending for open source + # amd gpu driver and my monitor (VG279QM) only supports DP 1.2 + # so no >240hz atm + "DP-2, 1920x1080@239.76, 0x0, 1" # main monitor + "DP-3, 1920x1080@143.61, 1920x0, 1" # second monitor + "HDMI-A-2, 2560x1440@59.95, 3840x0, 1" # third monitor (drawing tablet) + "HDMI-A-1, 1920x1080@60.00, -1920x0, 1" # tv ]; general = { - gaps_in = 5; - gaps_out = "0, 10, 10, 10"; - border_size = 2; - layout = "dwindle"; + gaps_in = 5; + gaps_out = "0, 10, 10, 10"; + border_size = 2; + layout = "dwindle"; }; plugin = { - # options at https://github.com/hyprwm/hyprland-plugins/tree/main/hyprscrolling - hyprscrolling = { - fullscreen_on_one_column = false; - column_width = 1.0; - }; + # options at https://github.com/hyprwm/hyprland-plugins/tree/main/hyprscrolling + hyprscrolling = { + fullscreen_on_one_column = false; + column_width = 1.0; + }; }; dwindle = { @@ -82,23 +77,23 @@ in }; decoration = { - rounding = 8; - - active_opacity = 1.00; - inactive_opacity = 1.00; + rounding = 8; - blur = { - xray = true; - size = 6; - passes = 2; - #vibrancy = 0.3; - special = true; - }; + active_opacity = 1.00; + inactive_opacity = 1.00; + + blur = { + xray = true; + size = 6; + passes = 2; + #vibrancy = 0.3; + special = true; + }; }; bezier = [ "workspace_curve, 0.56,0.19,0.24,0.58" - "workspace_in_curve, 0.56,0.19,0.56,0.99" + "workspace_in_curve, 0.56,0.19,0.56,0.99" ]; animation = [ @@ -109,11 +104,11 @@ in input = { repeat_rate = 50; - repeat_delay = 300; + repeat_delay = 300; - sensitivity = 0; # 0 = no modification - accel_profile = "flat"; - force_no_accel = false; # not recommended to turn on + sensitivity = 0; # 0 = no modification + accel_profile = "flat"; + force_no_accel = false; # not recommended to turn on }; cursor.no_hardware_cursors = true; @@ -125,66 +120,66 @@ in # bindings bind = [ - # binds for applications - "$mod, t, exec, $terminal" - "$mod, r, exec, $browser" - "$mod, e, exec, $explorer" + # binds for applications + "$mod, t, exec, $terminal" + "$mod, r, exec, $browser" + "$mod, e, exec, $explorer" - # binds for rofi - "$mod, d, exec, pkill -x rofi || rofi -show drun -show-icons" - "alt, tab, exec, pkill -x rofi || rofi -modi window -show window -show-icons" - "$mod, v, exec, pkill -x rofi || cliphist list | rofi -dmenu | cliphist decode | wl-copy" + # binds for rofi + "$mod, d, exec, pkill -x rofi || rofi -show drun -show-icons" + "alt, tab, exec, pkill -x rofi || rofi -modi window -show window -show-icons" + "$mod, v, exec, pkill -x rofi || cliphist list | rofi -dmenu | cliphist decode | wl-copy" - # screenshots - # todo: add active monitor - "$mod, s, exec, grim -g \"\$(slurp -d)\" - | wl-copy" # region - "$mod+alt, s, exec, grim -g \"\$(slurp -o)\" - | wl-copy" # monitor - "$mod+ctrl, s, exec, grim - | wl-copy" # all monitors + # screenshots + # todo: add active monitor + "$mod, s, exec, grim -g \"\$(slurp -d)\" - | wl-copy" # region + "$mod+alt, s, exec, grim -g \"\$(slurp -o)\" - | wl-copy" # monitor + "$mod+ctrl, s, exec, grim - | wl-copy" # all monitors - # hyprpicker - "$mod, n, exec, hyprpicker -v" - # hyprlock - "$mod+alt, y, exec, hyprlock" - # task manager - "$mod+ctrl, escape, exec, task-manager.sh" - "$mod+ctrl, grave, exec, task-manager.sh" + # hyprpicker + "$mod, n, exec, hyprpicker -v" + # hyprlock + "$mod+alt, y, exec, hyprlock" + # task manager + "$mod+ctrl, escape, exec, task-manager.sh" + "$mod+ctrl, grave, exec, task-manager.sh" - # media binds (more in binde below) - ", XF86AudioMute, exec, wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle" - ", XF86AudioPlay, exec, playerctl play-pause" - ", XF86AudioNext, exec, playerctl next" - ", XF86AudioPrev, exec, playerctl previous" - "Shift_R, XF86AudioPlay, exec, playerctl shuffle toggle" - "Shift_R, XF86AudioNext, exec, playerctl loop track" + # media binds (more in binde below) + ", XF86AudioMute, exec, wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle" + ", XF86AudioPlay, exec, playerctl play-pause" + ", XF86AudioNext, exec, playerctl next" + ", XF86AudioPrev, exec, playerctl previous" + "Shift_R, XF86AudioPlay, exec, playerctl shuffle toggle" + "Shift_R, XF86AudioNext, exec, playerctl loop track" # manage windows / session - "$mod+alt, c, killactive" - "$mod, f, fullscreen" - "$mod, x, togglefloating" - "$mod, i, togglesplit" - "$mod+Alt, Delete, exit" # exit hyprland + "$mod+alt, c, killactive" + "$mod, f, fullscreen" + "$mod, x, togglefloating" + "$mod, i, togglesplit" + "$mod+Alt, Delete, exit" # exit hyprland # move focus - "$mod, h, movefocus, l" - "$mod, j, movefocus, d" - "$mod, k, movefocus, u" - "$mod, l, movefocus, r" + "$mod, h, movefocus, l" + "$mod, j, movefocus, d" + "$mod, k, movefocus, u" + "$mod, l, movefocus, r" # move window - "$mod+alt, h, movewindow, l" - "$mod+alt, j, movewindow, d" - "$mod+alt, k, movewindow, u" - "$mod+alt, l, movewindow, r" + "$mod+alt, h, movewindow, l" + "$mod+alt, j, movewindow, d" + "$mod+alt, k, movewindow, u" + "$mod+alt, l, movewindow, r" # swap window - "$mod+ctrl, h, swapwindow, l" - "$mod+ctrl, j, swapwindow, d" - "$mod+ctrl, k, swapwindow, u" - "$mod+ctrl, l, swapwindow, r" + "$mod+ctrl, h, swapwindow, l" + "$mod+ctrl, j, swapwindow, d" + "$mod+ctrl, k, swapwindow, u" + "$mod+ctrl, l, swapwindow, r" - # move column (hyprscrolling) - "$mod, period, layoutmsg, move +col" - "$mod, comma, layoutmsg, move -col" + # move column (hyprscrolling) + "$mod, period, layoutmsg, move +col" + "$mod, comma, layoutmsg, move -col" # focus monitor #"$mod+Ctrl+Tab, 1, focusmonitor, DP-2" @@ -192,114 +187,114 @@ in #"$mod+Ctrl+Tab, 3, focusmonitor, HDMI-A-2" #"$mod+Ctrl+Tab, 4, focusmonitor, HDMI-A-1" - # move workspace to monitor + # move workspace to monitor #"$mod+Tab, 1, movecurrentworkspacetomonitor, DP-2" #"$mod+Tab, 2, movecurrentworkspacetomonitor, DP-3" #"$mod+Tab, 3, movecurrentworkspacetomonitor, HDMI-A-2" #"$mod+Tab, 4, movecurrentworkspacetomonitor, HDMI-A-1" - - # special workspace - "$mod, escape, togglespecialworkspace" - "$mod+shift, escape, movetoworkspace, special" - "$mod+alt, escape, movetoworkspacesilent, special" - "$mod, grave, togglespecialworkspace" - "$mod+shift, grave, movetoworkspace, special" - "$mod+alt, grave, movetoworkspacesilent, special" + + # special workspace + "$mod, escape, togglespecialworkspace" + "$mod+shift, escape, movetoworkspace, special" + "$mod+alt, escape, movetoworkspacesilent, special" + "$mod, grave, togglespecialworkspace" + "$mod+shift, grave, movetoworkspace, special" + "$mod+alt, grave, movetoworkspacesilent, special" # switch workspaces - "$mod, 1, workspace, 1" - "$mod, 2, workspace, 2" - "$mod, 3, workspace, 3" - "$mod, 4, workspace, 4" - "$mod, 5, workspace, 5" - "$mod, 6, workspace, 6" - "$mod, 7, workspace, 7" - "$mod, 8, workspace, 8" - "$mod, 9, workspace, 9" - "$mod, 0, workspace, 10" - "$mod, minus, workspace, 11" - "$mod, equal, workspace, 12" + "$mod, 1, workspace, 1" + "$mod, 2, workspace, 2" + "$mod, 3, workspace, 3" + "$mod, 4, workspace, 4" + "$mod, 5, workspace, 5" + "$mod, 6, workspace, 6" + "$mod, 7, workspace, 7" + "$mod, 8, workspace, 8" + "$mod, 9, workspace, 9" + "$mod, 0, workspace, 10" + "$mod, minus, workspace, 11" + "$mod, equal, workspace, 12" # move focused window to workspace - "$mod+shift, 1, movetoworkspace, 1" - "$mod+shift, 2, movetoworkspace, 2" - "$mod+shift, 3, movetoworkspace, 3" - "$mod+shift, 4, movetoworkspace, 4" - "$mod+shift, 5, movetoworkspace, 5" - "$mod+shift, 6, movetoworkspace, 6" - "$mod+shift, 7, movetoworkspace, 7" - "$mod+shift, 8, movetoworkspace, 8" - "$mod+shift, 9, movetoworkspace, 9" - "$mod+shift, 0, movetoworkspace, 10" - "$mod+shift, minus, movetoworkspace, 11" - "$mod+shift, equal, movetoworkspace, 12" + "$mod+shift, 1, movetoworkspace, 1" + "$mod+shift, 2, movetoworkspace, 2" + "$mod+shift, 3, movetoworkspace, 3" + "$mod+shift, 4, movetoworkspace, 4" + "$mod+shift, 5, movetoworkspace, 5" + "$mod+shift, 6, movetoworkspace, 6" + "$mod+shift, 7, movetoworkspace, 7" + "$mod+shift, 8, movetoworkspace, 8" + "$mod+shift, 9, movetoworkspace, 9" + "$mod+shift, 0, movetoworkspace, 10" + "$mod+shift, minus, movetoworkspace, 11" + "$mod+shift, equal, movetoworkspace, 12" # move focused window to workspace silently - "$mod+alt, 1, movetoworkspacesilent, 1" - "$mod+alt, 2, movetoworkspacesilent, 2" - "$mod+alt, 3, movetoworkspacesilent, 3" - "$mod+alt, 4, movetoworkspacesilent, 4" - "$mod+alt, 5, movetoworkspacesilent, 5" - "$mod+alt, 6, movetoworkspacesilent, 6" - "$mod+alt, 7, movetoworkspacesilent, 7" - "$mod+alt, 8, movetoworkspacesilent, 8" - "$mod+alt, 9, movetoworkspacesilent, 9" - "$mod+alt, 0, movetoworkspacesilent, 10" - "$mod+alt, minus, movetoworkspacesilent, 11" - "$mod+alt, equal, movetoworkspacesilent, 12" + "$mod+alt, 1, movetoworkspacesilent, 1" + "$mod+alt, 2, movetoworkspacesilent, 2" + "$mod+alt, 3, movetoworkspacesilent, 3" + "$mod+alt, 4, movetoworkspacesilent, 4" + "$mod+alt, 5, movetoworkspacesilent, 5" + "$mod+alt, 6, movetoworkspacesilent, 6" + "$mod+alt, 7, movetoworkspacesilent, 7" + "$mod+alt, 8, movetoworkspacesilent, 8" + "$mod+alt, 9, movetoworkspacesilent, 9" + "$mod+alt, 0, movetoworkspacesilent, 10" + "$mod+alt, minus, movetoworkspacesilent, 11" + "$mod+alt, equal, movetoworkspacesilent, 12" - # move current workspace to monitor - "$mod+shift+alt, 1, movecurrentworkspacetomonitor, DP-2" - "$mod+shift+alt, 2, movecurrentworkspacetomonitor, DP-3" - "$mod+shift+alt, 3, movecurrentworkspacetomonitor, HDMI-A-2" - "$mod+shift+alt, 4, movecurrentworkspacetomonitor, HDMI-A-1" + # move current workspace to monitor + "$mod+shift+alt, 1, movecurrentworkspacetomonitor, DP-2" + "$mod+shift+alt, 2, movecurrentworkspacetomonitor, DP-3" + "$mod+shift+alt, 3, movecurrentworkspacetomonitor, HDMI-A-2" + "$mod+shift+alt, 4, movecurrentworkspacetomonitor, HDMI-A-1" ]; # bindings for mouse bindm = [ - "$mod, mouse:272, movewindow" # left click - "$mod, mouse:273, resizewindow" # right click + "$mod, mouse:272, movewindow" # left click + "$mod, mouse:273, resizewindow" # right click ]; # repeating binds, repeats when held binde = [ ", XF86AudioRaiseVolume, exec, wpctl set-volume -l 1.0 @DEFAULT_AUDIO_SINK@ 5%+" ", XF86AudioLowerVolume, exec, wpctl set-volume -l 1.0 @DEFAULT_AUDIO_SINK@ 5%-" - "Shift_R, XF86AudioRaiseVolume, exec, playerctl volume 0.05+" - "Shift_R, XF86AudioLowerVolume, exec, playerctl volume 0.05-" + "Shift_R, XF86AudioRaiseVolume, exec, playerctl volume 0.05+" + "Shift_R, XF86AudioLowerVolume, exec, playerctl volume 0.05-" # resize window - # variable for `resizeactive` is (x, y) - # starting at 0, 0 in the top left - # meaning: - # -x = left - # +x = right - # -y = up - # +y = down - "$mod+ctrl+shift, h, resizeactive, -10 0" - "$mod+ctrl+shift, j, resizeactive, 0 10" - "$mod+ctrl+shift, k, resizeactive, 0 -10" - "$mod+ctrl+shift, l, resizeactive, 10 0" + # variable for `resizeactive` is (x, y) + # starting at 0, 0 in the top left + # meaning: + # -x = left + # +x = right + # -y = up + # +y = down + "$mod+ctrl+shift, h, resizeactive, -10 0" + "$mod+ctrl+shift, j, resizeactive, 0 10" + "$mod+ctrl+shift, k, resizeactive, 0 -10" + "$mod+ctrl+shift, l, resizeactive, 10 0" ]; layerrule = [ - #"blur, rofi" - #"ignorezero, rofi" - #"blur, aurorashell" - #"ignorealpha 0.7, aurorashell" - "blur on, match:namespace waybar" - "ignore_alpha 0, match:namespace waybar" + #"blur, rofi" + #"ignorezero, rofi" + #"blur, aurorashell" + #"ignorealpha 0.7, aurorashell" + "blur on, match:namespace waybar" + "ignore_alpha 0, match:namespace waybar" ]; env = [ - "EDITOR,auravim" + "EDITOR,auravim" - "XCURSOR_THEME,Bunny (Icy) and Strawberries" - "XCURSOR_SIZE,24" - "HYPRCURSOR_THEME,Bunny (Icy) and Strawberries" - "HYPRCURSOR_SIZE,24" + "XCURSOR_THEME,Bunny (Icy) and Strawberries" + "XCURSOR_SIZE,24" + "HYPRCURSOR_THEME,Bunny (Icy) and Strawberries" + "HYPRCURSOR_SIZE,24" - "QT_QPA_PLATFORM,wayland" + "QT_QPA_PLATFORM,wayland" ]; }; }; diff --git a/homes/modules/wm/river.nix b/homes/modules/wm/river.nix index 5c96740..3fac1a0 100644 --- a/homes/modules/wm/river.nix +++ b/homes/modules/wm/river.nix @@ -1,14 +1,10 @@ -{ config, inputs, pkgs, upkgs, ... }: -let - unstable = inputs.nixpkgs-unstable.legacyPackages.${pkgs.stdenv.hostPlatform.system}; -in -{ +{spkgs, ...}: { wayland.windowManager.river = let layout = "rivertile"; in { - enable = true; - xwayland.enable = true; - package = upkgs.river-classic; # FIX: using upkgs version as zls is broken rn ;-; + enable = true; + xwayland.enable = true; + package = spkgs.river-classic; # FIX: using spkgs version as zls is broken rn ;-; settings = let main = "Super"; @@ -22,61 +18,61 @@ in border-width = 1; spawn = [ - ''${layout}'' + ''${layout}'' - "awww-daemon" - "waybar" + "awww-daemon" + "waybar" ]; map.normal = { - "${main} C" = "close"; # close focused window - "${main}+Alt Delete" = "exit"; # exit river + "${main} C" = "close"; # close focused window + "${main}+Alt Delete" = "exit"; # exit river - # app launcher - "${main} D" = ''spawn "pkill -x rofi || rofi -show drun -show-icons"''; - "Alt Tab" = ''spawn "pkill -x rofi || rofi -modi window -show window -show-icons"''; + # app launcher + "${main} D" = ''spawn "pkill -x rofi || rofi -show drun -show-icons"''; + "Alt Tab" = ''spawn "pkill -x rofi || rofi -modi window -show window -show-icons"''; # spawn applications - "${main} T" = ''spawn "${terminal}"''; - "${main} R" = ''spawn "${browser}"''; + "${main} T" = ''spawn "${terminal}"''; + "${main} R" = ''spawn "${browser}"''; # move focused view to top of layout stack - "${main} N" = ''zoom''; + "${main} N" = ''zoom''; # focus next/previous view - "${main} J" = "focus-view previous"; - "${main} K" = "focus-view next"; - # move to next/previous output - "${main} H" = "focus-output previous"; - "${main} L" = "focus-output next"; + "${main} J" = "focus-view previous"; + "${main} K" = "focus-view next"; + # move to next/previous output + "${main} H" = "focus-output previous"; + "${main} L" = "focus-output next"; # swap next/previous view - "${main}+Alt J" = "swap previous"; - "${main}+Alt K" = "swap next"; - # send view to next/previous output - # and switch to that output (wip) - "${main}+Alt H" = "send-to-output previous"; - #"${main}+Alt H" = "focus-output previous"; - "${main}+Alt L" = "send-to-output next"; - #"${main}+Alt L" = "focus-output next"; + "${main}+Alt J" = "swap previous"; + "${main}+Alt K" = "swap next"; + # send view to next/previous output + # and switch to that output (wip) + "${main}+Alt H" = "send-to-output previous"; + #"${main}+Alt H" = "focus-output previous"; + "${main}+Alt L" = "send-to-output next"; + #"${main}+Alt L" = "focus-output next"; # move views - #"${main}+Alt H" = "move left 100"; - #"${main}+Alt J" = "move down 100"; - #"${main}+Alt K" = "move up 100"; - #"${main}+Alt L" = "move right 100"; + #"${main}+Alt H" = "move left 100"; + #"${main}+Alt J" = "move down 100"; + #"${main}+Alt K" = "move up 100"; + #"${main}+Alt L" = "move right 100"; # snap views - #"${main}+Control H" = "snap left"; - #"${main}+Control J" = "snap down"; - #"${main}+Control K" = "snap up"; - #"${main}+Control L" = "snap right"; + #"${main}+Control H" = "snap left"; + #"${main}+Control J" = "snap down"; + #"${main}+Control K" = "snap up"; + #"${main}+Control L" = "snap right"; # resize views - #"${main}+Shift H" = "resize horizontal -100"; - #"${main}+Shift J" = "resize vertical -100"; - #"${main}+Shift K" = "resize vertical 100"; - #"${main}+Shift L" = "resize horizontal 100"; + #"${main}+Shift H" = "resize horizontal -100"; + #"${main}+Shift J" = "resize vertical -100"; + #"${main}+Shift K" = "resize vertical 100"; + #"${main}+Shift L" = "resize horizontal 100"; }; }; }; diff --git a/homes/modules/wm/sway.nix b/homes/modules/wm/sway.nix index c5dd3be..36db54e 100644 --- a/homes/modules/wm/sway.nix +++ b/homes/modules/wm/sway.nix @@ -1,8 +1,4 @@ -{ config, inputs, pkgs, ... }: -let - unstable = inputs.nixpkgs-unstable.legacyPackages.${pkgs.stdenv.hostPlatform.system}; -in -{ +{config, ...}: { wayland.windowManager.sway = { enable = true; config = rec { @@ -10,43 +6,43 @@ in terminal = "kitty"; # disable sway bar - bars = [ ]; + bars = []; # set border colors #colors = { - #focused = + #focused = startup = [ - { command = "awww-daemon"; } - { command = "waybar"; } + {command = "awww-daemon";} + {command = "waybar";} ]; keybindings = let - main = config.wayland.windowManager.sway.config.modifier; - terminal = config.wayland.windowManager.sway.config.terminal; - browser = "firefox"; + main = config.wayland.windowManager.sway.config.modifier; + terminal = config.wayland.windowManager.sway.config.terminal; + browser = "firefox"; in { - "${main}+c" = "kill"; # close focused window - "${main}+Alt+Delete" = "exit"; # exit sway + "${main}+c" = "kill"; # close focused window + "${main}+Alt+Delete" = "exit"; # exit sway # open launcher "${main}+d" = "exec pkill -x rofi || rofi -show drun -show-icons"; "Alt+Tab" = "exec pkill -x rofi || rofi -modi window -show window -show-icons"; - "${main}+t" = "exec ${terminal}"; # open terminal - "${main}+r" = "exec ${browser}"; # open browser + "${main}+t" = "exec ${terminal}"; # open terminal + "${main}+r" = "exec ${browser}"; # open browser # move focus - "${main}+h" = "focus left"; - "${main}+j" = "focus down"; - "${main}+k" = "focus up"; - "${main}+l" = "focus right"; + "${main}+h" = "focus left"; + "${main}+j" = "focus down"; + "${main}+k" = "focus up"; + "${main}+l" = "focus right"; # move focused window - "${main}+Alt+h" = "move left"; - "${main}+Alt+j" = "move down"; - "${main}+Alt+k" = "move up"; - "${main}+Alt+l" = "move right"; + "${main}+Alt+h" = "move left"; + "${main}+Alt+j" = "move down"; + "${main}+Alt+k" = "move up"; + "${main}+Alt+l" = "move right"; }; }; }; diff --git a/hosts/nixarawrui/default.nix b/hosts/nixarawrui/default.nix index c3d5c29..e51ce7e 100644 --- a/hosts/nixarawrui/default.nix +++ b/hosts/nixarawrui/default.nix @@ -1,12 +1,10 @@ { inputs, - pkgs, upkgs, + spkgs, root, ... -}: let - hyprland-git = inputs.hyprland-git.packages.${pkgs.stdenv.hostPlatform.system}; -in { +}: { imports = [ ./hardware-configuration.nix @@ -19,8 +17,6 @@ in { download-buffer-size = 524288000; }; - nixpkgs.config.allowUnfree = true; - # Use the systemd-boot EFI boot loader. boot = rec { initrd.kernelModules = ["amdgpu"]; @@ -30,8 +26,8 @@ in { efi.canTouchEfiVariables = true; }; - # kernelPackages = pkgs.cachyosKernels.linuxPackages-cachyos-latest-lto-x86_64-v4; - kernelPackages = pkgs.linuxPackages_latest; + # kernelPackages = upkgs.cachyosKernels.linuxPackages-cachyos-latest-lto-x86_64-v4; + kernelPackages = upkgs.linuxPackages_latest; kernelModules = ["v4l2loopback"]; extraModulePackages = with kernelPackages; [v4l2loopback]; @@ -107,7 +103,7 @@ in { enable = true; }; - extraPortals = with pkgs; [ + extraPortals = with upkgs; [ xdg-desktop-portal-termfilechooser ]; @@ -134,7 +130,7 @@ in { enable = true; enable32Bit = true; - extraPackages = with pkgs; [ + extraPackages = with upkgs; [ libva-vdpau-driver libvdpau-va-gl ]; @@ -165,7 +161,7 @@ in { udev = { enable = true; - packages = with pkgs; [ + packages = with upkgs; [ # adds via support for keyboards and stuffs :3 (needs reboot) via @@ -208,9 +204,9 @@ in { uid = 1000; extraGroups = ["wheel" "disk" "input" "video" "audio" "networkmanager" "games"]; - shell = pkgs.zsh; + shell = upkgs.zsh; - packages = with pkgs; [ + packages = with upkgs; [ flatpak tree ]; @@ -220,14 +216,6 @@ in { }; }; - home-manager = { - useGlobalPkgs = true; - useUserPackages = true; - - users.aurora = import ../../homes/aurora; - extraSpecialArgs = {inherit inputs upkgs root;}; - }; - programs = { # nix-ld runs unpatched dynamic binaries on nixos :3 nix-ld.enable = true; @@ -251,12 +239,12 @@ in { # to work properly on hyprland hyprland = { enable = true; - package = hyprland-git.hyprland; - portalPackage = hyprland-git.xdg-desktop-portal-hyprland; + package = upkgs.hyprland-git.hyprland; + portalPackage = upkgs.hyprland-git.xdg-desktop-portal-hyprland; }; river-classic = { - package = upkgs.river-classic; # FIX: using upkgs version as zls is broken rn ;-; + package = spkgs.river-classic; # FIX: using spkgs version as zls is broken rn ;-; enable = true; }; @@ -268,7 +256,7 @@ in { # steam has to be enabled here steam = { enable = true; - package = pkgs.millennium-steam; + package = upkgs.millennium-steam; remotePlay.openFirewall = true; dedicatedServer.openFirewall = true; localNetworkGameTransfers.openFirewall = true; @@ -277,7 +265,7 @@ in { alvr = { enable = true; - package = upkgs.alvr; + package = spkgs.alvr; openFirewall = true; }; @@ -300,7 +288,7 @@ in { # List packages installed in system profile. To search, run: # $ nix search wget - environment.systemPackages = with pkgs; [ + environment.systemPackages = with upkgs; [ # linux packages!!! linuxPackages.v4l2loopback @@ -325,17 +313,17 @@ in { # waydroid needs it apparently for clipboard sharing?? wl-clipboard (waydroid.override { - python3Packages = pkgs.python312Packages; + python3Packages = upkgs.python312Packages; }) # game stuff :3 (lutris.override { - extraPkgs = pkgs: [ + extraupkgs = upkgs: [ libadwaita ]; }) (steam.override { - extraPkgs = pkgs: [ + extraupkgs = upkgs: [ nss xorg.libX11 xorg.libXScrnSaver @@ -356,7 +344,7 @@ in { # Most users should NEVER change this value after the initial install, for any reason, # even if you've upgraded your system to a new NixOS release. # - # This value does NOT affect the Nixpkgs version your packages and OS are pulled from, + # This value does NOT affect the Nixupkgs version your packages and OS are pulled from, # so changing it will NOT upgrade your system - see https://nixos.org/manual/nixos/stable/#sec-upgrading for how # to actually do that. # diff --git a/hosts/nixarawrui/hardware-configuration.nix b/hosts/nixarawrui/hardware-configuration.nix index fb2aef7..664301b 100644 --- a/hosts/nixarawrui/hardware-configuration.nix +++ b/hosts/nixarawrui/hardware-configuration.nix @@ -1,55 +1,58 @@ # 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") - ]; + config, + lib, + modulesPath, + ... +}: { + imports = [ + (modulesPath + "/installer/scan/not-detected.nix") + ]; - boot.initrd.availableKernelModules = [ "nvme" "xhci_pci" "ahci" "usb_storage" "usbhid" "sd_mod" ]; - boot.initrd.kernelModules = [ ]; - boot.kernelModules = [ "kvm-amd" ]; - boot.extraModulePackages = [ ]; + boot.initrd.availableKernelModules = ["nvme" "xhci_pci" "ahci" "usb_storage" "usbhid" "sd_mod"]; + boot.initrd.kernelModules = []; + boot.kernelModules = ["kvm-amd"]; + boot.extraModulePackages = []; - fileSystems."/" = - { device = "/dev/disk/by-uuid/257dd2c7-59b1-431e-a5a1-c7db00b3312b"; - fsType = "btrfs"; - options = [ "subvol=@" ]; - }; + fileSystems."/" = { + device = "/dev/disk/by-uuid/257dd2c7-59b1-431e-a5a1-c7db00b3312b"; + fsType = "btrfs"; + options = ["subvol=@"]; + }; - fileSystems."/home" = - { device = "/dev/disk/by-uuid/257dd2c7-59b1-431e-a5a1-c7db00b3312b"; - fsType = "btrfs"; - options = [ "subvol=@home" ]; - }; + fileSystems."/home" = { + device = "/dev/disk/by-uuid/257dd2c7-59b1-431e-a5a1-c7db00b3312b"; + fsType = "btrfs"; + options = ["subvol=@home"]; + }; - fileSystems."/nix" = - { device = "/dev/disk/by-uuid/257dd2c7-59b1-431e-a5a1-c7db00b3312b"; - fsType = "btrfs"; - options = [ "subvol=@nix" ]; - }; + fileSystems."/nix" = { + device = "/dev/disk/by-uuid/257dd2c7-59b1-431e-a5a1-c7db00b3312b"; + fsType = "btrfs"; + options = ["subvol=@nix"]; + }; - fileSystems."/games" = - { device = "/dev/disk/by-uuid/257dd2c7-59b1-431e-a5a1-c7db00b3312b"; - fsType = "btrfs"; - options = [ "subvol=@games" ]; - }; + fileSystems."/games" = { + device = "/dev/disk/by-uuid/257dd2c7-59b1-431e-a5a1-c7db00b3312b"; + fsType = "btrfs"; + options = ["subvol=@games"]; + }; - fileSystems."/data" = - { device = "/dev/disk/by-uuid/257dd2c7-59b1-431e-a5a1-c7db00b3312b"; - fsType = "btrfs"; - options = [ "subvol=@data" ]; - }; + fileSystems."/data" = { + device = "/dev/disk/by-uuid/257dd2c7-59b1-431e-a5a1-c7db00b3312b"; + fsType = "btrfs"; + options = ["subvol=@data"]; + }; - fileSystems."/boot" = - { device = "/dev/disk/by-uuid/63DC-1AEB"; - fsType = "vfat"; - options = [ "fmask=0077" "dmask=0077" ]; - }; + fileSystems."/boot" = { + device = "/dev/disk/by-uuid/63DC-1AEB"; + fsType = "vfat"; + options = ["fmask=0077" "dmask=0077"]; + }; - swapDevices = [ ]; + swapDevices = []; # 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 diff --git a/hosts/nixarawrui/modules/amdgpu-ignore-ctx-privileges.nix b/hosts/nixarawrui/modules/amdgpu-ignore-ctx-privileges.nix index 8498061..3174fb2 100644 --- a/hosts/nixarawrui/modules/amdgpu-ignore-ctx-privileges.nix +++ b/hosts/nixarawrui/modules/amdgpu-ignore-ctx-privileges.nix @@ -1,5 +1,5 @@ { - pkgs, + upkgs, lib, config, ... @@ -12,20 +12,22 @@ in { }; config = lib.mkIf enabled { - nixpkgs.overlays = [ - (self: super: { - amdgpu-ignore-ctx-privileges = super.fetchpatch { - name = "cap_sys_nice_begone.patch"; - url = "https://github.com/Frogging-Family/community-patches/raw/master/linux61-tkg/cap_sys_nice_begone.mypatch"; - hash = "sha256-Y3a0+x2xvHsfLax/uwycdJf3xLxvVfkfDVqjkxNaYEo="; - }; - }) - ]; + nixpkgs.channels.default = { + upkgs.overlays = [ + (self: super: { + amdgpu-ignore-ctx-privileges = super.fetchpatch { + name = "cap_sys_nice_begone.patch"; + url = "https://github.com/Frogging-Family/community-patches/raw/master/linux61-tkg/cap_sys_nice_begone.mypatch"; + hash = "sha256-Y3a0+x2xvHsfLax/uwycdJf3xLxvVfkfDVqjkxNaYEo="; + }; + }) + ]; + }; boot.kernelPatches = [ { name = "amdgpu-ignore-ctx-privileges"; - patch = pkgs.amdgpu-ignore-ctx-privileges; + patch = upkgs.amdgpu-ignore-ctx-privileges; } ]; }; diff --git a/nixpkgs.nix b/nixpkgs.nix new file mode 100644 index 0000000..93f40f4 --- /dev/null +++ b/nixpkgs.nix @@ -0,0 +1,28 @@ +{ + inputs, + system, + ... +}: { + nixpkgs.channels.default = { + # nixpkgs-unstable + upkgs = { + inherit system; + source = inputs.nixpkgs-unstable; + overlays = with inputs; [ + cachyos.overlays.pinned + millennium.overlays.default + + (import ./overlays.nix {inherit inputs;}) + ]; + + config.allowUnfree = true; + }; + # nixpkgs-staging + spkgs = { + inherit system; + source = inputs.nixpkgs-staging; + overlays = []; + config.allowUnfree = true; + }; + }; +} diff --git a/overlays.nix b/overlays.nix index 8d28bdd..30fe392 100644 --- a/overlays.nix +++ b/overlays.nix @@ -1,3 +1,9 @@ +# NOTE: `system` is provided by Cerulean +{ + inputs, + system, + ... +}: [ (self: super: { ekphos = import ../packages/ekphos { pkgs = super; @@ -10,4 +16,7 @@ }) ]; }); + + hyprland-git = inputs.hyprland-git.packages.${system}; }) +] diff --git a/snow.nix b/snow.nix new file mode 100644 index 0000000..af178fa --- /dev/null +++ b/snow.nix @@ -0,0 +1,23 @@ +{cerulean, ...} @ inputs: +cerulean.mkNexus ./. (self: { + nexus = { + specialArgs = {inherit inputs;}; + + extraPkgConfig = { + config.allowUnfree = true; + }; + + extraModules = with inputs; [ + home-manager.nixosModules.home-manager + ]; + + nodes = { + nixarawrui = { + system = "x86_64-linux"; + extraModules = with inputs; [ + sddm-silent.nixosModules.default + ]; + }; + }; + }; +}) From f66aa330c3b483dd7ede43d0b6e2dfed7d8ab406 Mon Sep 17 00:00:00 2001 From: _cry64 Date: Fri, 13 Feb 2026 23:27:35 +1000 Subject: [PATCH 14/36] #1 hater of infinite recursion --- flake.lock | 48 +-- flake.nix | 42 +-- homes/aurora/default.nix | 10 +- homes/modules/de/awww.nix | 16 +- homes/modules/de/hyprlock/hyprlock.nix | 19 +- homes/modules/de/rofi/rofi.nix | 6 +- homes/modules/de/waybar/waybar.nix | 166 +++++---- homes/modules/programs/iamb/iamb.nix | 12 +- homes/modules/programs/neovim/nixcats.nix | 226 ++++++------ homes/modules/programs/nixcord.nix | 241 +++++++------ homes/modules/programs/spicetify.nix | 32 +- homes/modules/programs/yazi/yazi.nix | 160 +++++++-- homes/modules/services/dunst.nix | 30 +- .../modules/services/keepassxc/keepassxc.nix | 13 +- homes/modules/services/pulse/pulse.nix | 10 +- .../services/wireplumber/wireplumber.nix | 3 +- homes/modules/shell/fastfetch/fastfetch.nix | 5 +- homes/modules/shell/programs.nix | 19 +- homes/modules/shell/zellij/zellij.nix | 10 +- homes/modules/shell/zsh.nix | 27 +- homes/modules/themeing/hellwal/hellwal.nix | 14 +- homes/modules/themeing/wallust/wallust.nix | 8 +- homes/modules/wm/hyprland/hyprland.nix | 335 +++++++++--------- homes/modules/wm/river.nix | 84 +++-- homes/modules/wm/sway.nix | 44 ++- hosts/nixarawrui/default.nix | 50 +-- hosts/nixarawrui/hardware-configuration.nix | 83 ++--- .../modules/amdgpu-ignore-ctx-privileges.nix | 24 +- nixpkgs.nix | 28 ++ overlays.nix | 9 + snow.nix | 23 ++ 31 files changed, 946 insertions(+), 851 deletions(-) create mode 100644 nixpkgs.nix create mode 100644 snow.nix diff --git a/flake.lock b/flake.lock index 73d8139..42b3ab7 100644 --- a/flake.lock +++ b/flake.lock @@ -145,7 +145,7 @@ "inputs": { "deploy-rs": "deploy-rs", "nixpkgs": [ - "nixpkgs" + "nixpkgs-unstable" ], "nixpkgs-unstable": [ "nixpkgs-unstable" @@ -156,11 +156,11 @@ ] }, "locked": { - "lastModified": 1770914135, - "narHash": "sha256-gAOwv1il9GUxsS7XGF612Ftm9+cMvd1QOINwJlWpCnQ=", + "lastModified": 1770984934, + "narHash": "sha256-5+/r1CFqmmzUIqZNjrGUjGgF4BxDkQ2NUrKkCsBBE9s=", "owner": "emilelcb", "repo": "Cerulean", - "rev": "b151f45dfbdb0849d3c24940af946f11652dd8bf", + "rev": "3ba385ee25cc02c91fe4c245a734d59c54a1b1df", "type": "github" }, "original": { @@ -455,7 +455,7 @@ "home-manager": { "inputs": { "nixpkgs": [ - "nixpkgs" + "nixpkgs-unstable" ] }, "locked": { @@ -1224,13 +1224,13 @@ "type": "github" } }, - "nixpkgs-unstable": { + "nixpkgs-staging": { "locked": { - "lastModified": 1770914792, - "narHash": "sha256-QpCRgIbupASO9adsg2kFNNUnOIQq0vJ9g6HCxlOA7v8=", + "lastModified": 1770984692, + "narHash": "sha256-n6HUgG2+cvLcQkZEgXu14qgl/SrKC4EZerQXod0HGDg=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "3b285f04c85ceacf7a53cfa21b2f5cb60a2d06e2", + "rev": "e7b82c0fddf16a5e3fee29bbd8e0c8c67158176d", "type": "github" }, "original": { @@ -1240,13 +1240,13 @@ "type": "github" } }, - "nixpkgs_10": { + "nixpkgs-unstable": { "locked": { - "lastModified": 1770562336, - "narHash": "sha256-ub1gpAONMFsT/GU2hV6ZWJjur8rJ6kKxdm9IlCT0j84=", + "lastModified": 1770841267, + "narHash": "sha256-9xejG0KoqsoKEGp2kVbXRlEYtFFcDTHjidiuX8hGO44=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "d6c71932130818840fc8fe9509cf50be8c64634f", + "rev": "ec7c70d12ce2fc37cb92aff673dcdca89d187bae", "type": "github" }, "original": { @@ -1256,7 +1256,7 @@ "type": "github" } }, - "nixpkgs_11": { + "nixpkgs_10": { "locked": { "lastModified": 1770197578, "narHash": "sha256-AYqlWrX09+HvGs8zM6ebZ1pwUqjkfpnv8mewYwAo+iM=", @@ -1272,7 +1272,7 @@ "type": "github" } }, - "nixpkgs_12": { + "nixpkgs_11": { "locked": { "lastModified": 1769461804, "narHash": "sha256-msG8SU5WsBUfVVa/9RPLaymvi5bI8edTavbIq3vRlhI=", @@ -1423,15 +1423,15 @@ "systems": "systems_2" }, "locked": { - "lastModified": 1770911021, - "narHash": "sha256-8FcXBu0CjeeZeq3uW2h/c5AV+hqELuyPiHsUogOSmZM=", - "owner": "emilelcb", + "lastModified": 1770975056, + "narHash": "sha256-ZXTz/P3zUbbM6lNXzt91u8EwfNqhXpYMu8+wvFZqQHE=", + "owner": "cry128", "repo": "nt", - "rev": "471e1617e8cc0bc749712a7a6af2b2e9f988ffbf", + "rev": "f42dcdd49a7921a7f433512e83d5f93696632412", "type": "github" }, "original": { - "owner": "emilelcb", + "owner": "cry128", "repo": "nt", "type": "github" } @@ -1489,7 +1489,7 @@ "nix-alien": "nix-alien", "nixcats": "nixcats", "nixcord": "nixcord", - "nixpkgs": "nixpkgs_10", + "nixpkgs-staging": "nixpkgs-staging", "nixpkgs-unstable": "nixpkgs-unstable", "sddm-silent": "sddm-silent", "spicetify-nix": "spicetify-nix", @@ -1538,7 +1538,7 @@ "sddm-silent": { "inputs": { "nixpkgs": [ - "nixpkgs" + "nixpkgs-unstable" ] }, "locked": { @@ -1557,7 +1557,7 @@ }, "spicetify-nix": { "inputs": { - "nixpkgs": "nixpkgs_11", + "nixpkgs": "nixpkgs_10", "systems": "systems_5" }, "locked": { @@ -1766,7 +1766,7 @@ "zen": { "inputs": { "home-manager": "home-manager_2", - "nixpkgs": "nixpkgs_12" + "nixpkgs": "nixpkgs_11" }, "locked": { "lastModified": 1770910552, diff --git a/flake.nix b/flake.nix index 4184706..09bf215 100644 --- a/flake.nix +++ b/flake.nix @@ -5,19 +5,19 @@ systems.url = "github:nix-systems/default"; # WARNING: don't remove duplicate!! (cry64 will fix) - nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable"; - nixpkgs-unstable.url = "github:NixOS/nixpkgs/staging-next"; + nixpkgs-unstable.url = "github:NixOS/nixpkgs/nixos-unstable"; + nixpkgs-staging.url = "github:NixOS/nixpkgs/staging-next"; home-manager = { url = "github:nix-community/home-manager/master"; - inputs.nixpkgs.follows = "nixpkgs"; + inputs.nixpkgs.follows = "nixpkgs-unstable"; }; cerulean = { url = "github:emilelcb/Cerulean"; inputs = { systems.follows = "systems"; - nixpkgs.follows = "nixpkgs"; + nixpkgs.follows = "nixpkgs-unstable"; nixpkgs-unstable.follows = "nixpkgs-unstable"; }; }; @@ -51,7 +51,7 @@ # temp theme until i bother creating my own -python3 extraPython3Packages = { - test = (_:[]); + test = _: []; }; # populates $LUA_PATH and $LUA_CPATH extraLuaPackages = { - test = [ (_:[]) ]; + test = [(_: [])]; }; - }); + }; # see :help nixCats.flake.outputs.packageDefinitions packageDefinitions.replace = { # these are the names of your packages # you can include as many as you wish. - auroranvim = {pkgs , ... }: { + auroranvim = {pkgs, ...}: { # they contain a settings set defined above # see :help nixCats.flake.outputs.settings settings = { wrapRc = true; # IMPORTANT: # your alias may not conflict with your other packages. - aliases = [ "auroravim" "auravim" "foxyvim" "avix" "fvix" "auim" ]; + aliases = ["auroravim" "auravim" "foxyvim" "avix" "fvix" "auim"]; }; # and a set of categories that you want # (and other information to pass to lua) categories = { general = true; - ui = true; - qol = true; - telescope = true; - fyler = true; - lsp = true; - completion = true; - treesitter = true; - discord = false; + ui = true; + qol = true; + telescope = true; + fyler = true; + lsp = true; + completion = true; + treesitter = true; + discord = false; - lang = { - lua = true; - nix = true; - rust = true; - zig = true; - elixir = true; - gleam = true; - java = true; - }; + lang = { + lua = true; + nix = true; + rust = true; + zig = true; + elixir = true; + gleam = true; + java = true; + }; }; }; }; diff --git a/homes/modules/programs/nixcord.nix b/homes/modules/programs/nixcord.nix index d1d9e2b..7e22a19 100644 --- a/homes/modules/programs/nixcord.nix +++ b/homes/modules/programs/nixcord.nix @@ -1,5 +1,4 @@ -{ config, inputs, lib, pkgs, ... }: -{ +{inputs, ...}: { imports = [ inputs.nixcord.homeModules.nixcord ]; @@ -20,125 +19,125 @@ ]; plugins = { anonymiseFileNames = { - enable = true; - anonymiseByDefault = true; - method = 0; - randomisedLength = 16; - }; - betterSessions = { - backgroundCheck = true; - checkInterval = 1; - }; - biggerStreamPreview.enable = true; - callTimer.enable = true; - fixYoutubeEmbeds.enable = true; - fixSpotifyEmbeds.enable = true; - tidalEmbeds.enable = true; - youtubeAdblock.enable = true; - followVoiceUser.enable = true; - friendsSince.enable = true; - ircColors = { - enable = true; - lightness = 80; - memberListColors = true; - applyColorOnlyInDms = false; - applyColorOnlyToUsersWithoutColor = false; - }; - messageLogger = { - enable = true; - showEditDiffs = true; - separatedDiffs = false; - }; - fakeNitro.enable = true; - ghosted.enable = true; - noF1.enable = true; - noMaskedUrlPaste.enable = true; - messageLatency = { - enable = false; - latency = -1; - showMillis = true; - }; - openInApp.enable = true; - crashHandler.enable = true; - disableCallIdle.enable = true; - experiments.enable = true; - expressionCloner.enable = true; - favoriteGifSearch.enable = true; - fixImagesQuality.enable = true; - forceOwnerCrown.enable = true; - forwardAnywhere.enable = true; - spotifyCrack.enable = true; - spotifyShareCommands.enable = true; - spotifyControls.enable = true; - fullUserInChatbox.enable = true; - gifPaste.enable = true; - ignoreActivities = { - enable = true; - ignorePlaying = true; - ignoreStreaming = true; - ignoreListening = true; - ignoreWatching = true; - ignoreCompeting = true; - }; - imageLink.enable = true; - imageZoom.enable = true; - memberCount.enable = true; - noDevtoolsWarning.enable = true; - noUnblockToJump.enable = true; - pauseInvitesForever.enable = true; - permissionsViewer.enable = true; - pictureInPicture = { - enable = true; - loop = true; - }; - platformIndicators.enable = true; - previewMessage.enable = true; - relationshipNotifier.enable = true; - revealAllSpoilers.enable = true; - serverInfo.enable = true; - serverListIndicators.enable = true; - showHiddenChannels.enable = true; - showHiddenThings.enable = true; - showTimeoutDuration = { - enable = true; - displayStyle = "tooltip"; - }; - silentTyping = { - enable = true; - enabledGlobally = false; - }; - startupTimings.enable = true; - typingIndicator.enable = true; - unlockedAvatarZoom = { - enable = true; - zoomMultiplier = 4.0; - }; - userMessagesPronouns.enable = true; - validUser.enable = true; - validReply.enable = true; - viewIcons = { - enable = true; - format = "webp"; - imgSize = "4096"; - }; - voiceChatDoubleClick.enable = true; - voiceDownload.enable = true; - voiceMessages = { - enable = true; - noiseSuppression = false; - echoCancellation = true; - }; - volumeBooster.enable = true; - webKeybinds.enable = true; - webScreenShareFixes.enable = true; - whoReacted.enable = true; - whosWatching.enable = true; - quickReply.enable = true; - questCompleter.enable = true; - shikiCodeblocks = { - enable = true; - useDevIcon = "COLOR"; - theme = "https://raw.githubusercontent.com/shikijs/textmate-grammars-themes/2d87559c7601a928b9f7e0f0dda243d2fb6d4499/packages/tm-themes/themes/kanagawa-wave.json"; + enable = true; + anonymiseByDefault = true; + method = 0; + randomisedLength = 16; + }; + betterSessions = { + backgroundCheck = true; + checkInterval = 1; + }; + biggerStreamPreview.enable = true; + callTimer.enable = true; + fixYoutubeEmbeds.enable = true; + fixSpotifyEmbeds.enable = true; + tidalEmbeds.enable = true; + youtubeAdblock.enable = true; + followVoiceUser.enable = true; + friendsSince.enable = true; + ircColors = { + enable = true; + lightness = 80; + memberListColors = true; + applyColorOnlyInDms = false; + applyColorOnlyToUsersWithoutColor = false; + }; + messageLogger = { + enable = true; + showEditDiffs = true; + separatedDiffs = false; + }; + fakeNitro.enable = true; + ghosted.enable = true; + noF1.enable = true; + noMaskedUrlPaste.enable = true; + messageLatency = { + enable = false; + latency = -1; + showMillis = true; + }; + openInApp.enable = true; + crashHandler.enable = true; + disableCallIdle.enable = true; + experiments.enable = true; + expressionCloner.enable = true; + favoriteGifSearch.enable = true; + fixImagesQuality.enable = true; + forceOwnerCrown.enable = true; + forwardAnywhere.enable = true; + spotifyCrack.enable = true; + spotifyShareCommands.enable = true; + spotifyControls.enable = true; + fullUserInChatbox.enable = true; + gifPaste.enable = true; + ignoreActivities = { + enable = true; + ignorePlaying = true; + ignoreStreaming = true; + ignoreListening = true; + ignoreWatching = true; + ignoreCompeting = true; + }; + imageLink.enable = true; + imageZoom.enable = true; + memberCount.enable = true; + noDevtoolsWarning.enable = true; + noUnblockToJump.enable = true; + pauseInvitesForever.enable = true; + permissionsViewer.enable = true; + pictureInPicture = { + enable = true; + loop = true; + }; + platformIndicators.enable = true; + previewMessage.enable = true; + relationshipNotifier.enable = true; + revealAllSpoilers.enable = true; + serverInfo.enable = true; + serverListIndicators.enable = true; + showHiddenChannels.enable = true; + showHiddenThings.enable = true; + showTimeoutDuration = { + enable = true; + displayStyle = "tooltip"; + }; + silentTyping = { + enable = true; + enabledGlobally = false; + }; + startupTimings.enable = true; + typingIndicator.enable = true; + unlockedAvatarZoom = { + enable = true; + zoomMultiplier = 4.0; + }; + userMessagesPronouns.enable = true; + validUser.enable = true; + validReply.enable = true; + viewIcons = { + enable = true; + format = "webp"; + imgSize = "4096"; + }; + voiceChatDoubleClick.enable = true; + voiceDownload.enable = true; + voiceMessages = { + enable = true; + noiseSuppression = false; + echoCancellation = true; + }; + volumeBooster.enable = true; + webKeybinds.enable = true; + webScreenShareFixes.enable = true; + whoReacted.enable = true; + whosWatching.enable = true; + quickReply.enable = true; + questCompleter.enable = true; + shikiCodeblocks = { + enable = true; + useDevIcon = "COLOR"; + theme = "https://raw.githubusercontent.com/shikijs/textmate-grammars-themes/2d87559c7601a928b9f7e0f0dda243d2fb6d4499/packages/tm-themes/themes/kanagawa-wave.json"; }; }; }; diff --git a/homes/modules/programs/spicetify.nix b/homes/modules/programs/spicetify.nix index 896d0b7..7fa740e 100644 --- a/homes/modules/programs/spicetify.nix +++ b/homes/modules/programs/spicetify.nix @@ -1,8 +1,12 @@ -{ inputs, lib, pkgs, ... }: -let - spicetifyPkgs = inputs.spicetify-nix.legacyPackages.${pkgs.stdenv.hostPlatform.system}; +{ + inputs, + upkgs, + system, + ... +}: let + spicetifyPkgs = inputs.spicetify-nix.legacyPackages.${system}; in { - imports = [ inputs.spicetify-nix.homeManagerModules.default ]; + imports = [inputs.spicetify-nix.homeManagerModules.default]; programs.spicetify = { enable = true; @@ -10,15 +14,17 @@ in { adblock shuffle keyboardShortcut - ({ - src = (pkgs.fetchFromGitHub { - owner = "Spikerko"; - repo = "spicy-lyrics"; - rev = "568c83326aa6aba6ded28c95df6fcfb25cab3648"; - hash = "sha256-lej93EDzGkmyrg5YMdPSqzrxlIfKsfaDBZosTvxoTNw="; - }) + /builds; - name = "spicy-lyrics.mjs"; - }) + { + src = + (upkgs.fetchFromGitHub { + owner = "Spikerko"; + repo = "spicy-lyrics"; + rev = "568c83326aa6aba6ded28c95df6fcfb25cab3648"; + hash = "sha256-lej93EDzGkmyrg5YMdPSqzrxlIfKsfaDBZosTvxoTNw="; + }) + + /builds; + name = "spicy-lyrics.mjs"; + } ]; theme = spicetifyPkgs.themes.comfy; colorScheme = "Sakura"; diff --git a/homes/modules/programs/yazi/yazi.nix b/homes/modules/programs/yazi/yazi.nix index 54c26be..9943358 100644 --- a/homes/modules/programs/yazi/yazi.nix +++ b/homes/modules/programs/yazi/yazi.nix @@ -1,8 +1,8 @@ -{ config, inputs, lib, pkgs, ... }: -{ +{upkgs, ...}: { # optional dependencies can be found here: # https://yazi-rs.github.io/docs/installation/ - home.packages = with pkgs; [ # dependencies + home.packages = with upkgs; [ + # dependencies ripdrag ]; @@ -22,9 +22,15 @@ keymap = { mgr.prepend_keymap = [ # drag and drop!! - { on = [ "" ]; run = ''shell "ripdrag -x -a \"$@\"" --confirm''; } + { + on = [""]; + run = ''shell "ripdrag -x -a \"$@\"" --confirm''; + } # copy hovered file to clipboard - { on = [ "" ]; run = ''shell -- path=%h; echo "file://$path" | wl-copy -t text/uri-list''; } + { + on = [""]; + run = ''shell -- path=%h; echo "file://$path" | wl-copy -t text/uri-list''; + } ]; }; @@ -34,36 +40,122 @@ theme = { icon = { dirs = [ - { name = ".config"; text = ""; fg = "red"; } - { name = ".git"; text = ""; fg = "blue"; } - { name = ".github"; text = ""; fg = "blue"; } - { name = ".npm"; text = ""; fg = "blue"; } - { name = "Desktop"; text = ""; fg = "magenta"; } - { name = "Documents"; text = ""; fg = "magenta"; } - { name = "Downloads"; text = ""; fg = "red"; } - { name = "Library"; text = ""; fg = "magenta"; } - { name = "Movies"; text = ""; fg = "magenta"; } - { name = "Music"; text = ""; fg = "magenta"; } - { name = "Pictures"; text = ""; fg = "magenta"; } - { name = "Public"; text = ""; fg = "magenta"; } - { name = "Videos"; text = ""; fg = "red"; } + { + name = ".config"; + text = ""; + fg = "red"; + } + { + name = ".git"; + text = ""; + fg = "blue"; + } + { + name = ".github"; + text = ""; + fg = "blue"; + } + { + name = ".npm"; + text = ""; + fg = "blue"; + } + { + name = "Desktop"; + text = ""; + fg = "magenta"; + } + { + name = "Documents"; + text = ""; + fg = "magenta"; + } + { + name = "Downloads"; + text = ""; + fg = "red"; + } + { + name = "Library"; + text = ""; + fg = "magenta"; + } + { + name = "Movies"; + text = ""; + fg = "magenta"; + } + { + name = "Music"; + text = ""; + fg = "magenta"; + } + { + name = "Pictures"; + text = ""; + fg = "magenta"; + } + { + name = "Public"; + text = ""; + fg = "magenta"; + } + { + name = "Videos"; + text = ""; + fg = "red"; + } ]; - conds = [ - # special files - { "if" = "orphan"; text = ""; } - { "if" = "link"; text = ""; } - { "if" = "block"; text = ""; } - { "if" = "char"; text = ""; } - { "if" = "fifo"; text = ""; } - { "if" = "sock"; text = ""; } - { "if" = "sticky"; text = ""; } - { "if" = "dummy"; text = ""; } + conds = [ + # special files + { + "if" = "orphan"; + text = ""; + } + { + "if" = "link"; + text = ""; + } + { + "if" = "block"; + text = ""; + } + { + "if" = "char"; + text = ""; + } + { + "if" = "fifo"; + text = ""; + } + { + "if" = "sock"; + text = ""; + } + { + "if" = "sticky"; + text = ""; + } + { + "if" = "dummy"; + text = ""; + } - # fallback - { "if" = "dir"; text = ""; fg = "blue"; } - { "if" = "exec"; text = ""; } - { "if" = "!dir"; text = ""; } - ]; + # fallback + { + "if" = "dir"; + text = ""; + fg = "blue"; + } + { + "if" = "exec"; + text = ""; + } + { + "if" = "!dir"; + text = ""; + } + ]; }; }; }; @@ -76,7 +168,7 @@ force = true; text = '' [filechooser] - cmd=${pkgs.xdg-desktop-portal-termfilechooser}/share/xdg-desktop-portal-termfilechooser/yazi-wrapper.sh + cmd=${upkgs.xdg-desktop-portal-termfilechooser}/share/xdg-desktop-portal-termfilechooser/yazi-wrapper.sh default_dir=$HOME env=TERMCMD='kitty --title filechooser' open_mode=suggested diff --git a/homes/modules/services/dunst.nix b/homes/modules/services/dunst.nix index 31c3453..3f70692 100644 --- a/homes/modules/services/dunst.nix +++ b/homes/modules/services/dunst.nix @@ -1,9 +1,5 @@ -{ config, inputs, pkgs, ... }: -let - unstable = inputs.nixpkgs-unstable.legacyPackages.${pkgs.stdenv.hostPlatform.system}; -in -{ - home.packages = with pkgs; [ +{upkgs, ...}: { + home.packages = with upkgs; [ libnotify ]; @@ -12,21 +8,21 @@ in settings = { global = { monitor = "DP-3"; # second monitor - origin = "top-left"; - layer = "top"; # above windows, below fullscreen - offset = "(16, 24)"; + origin = "top-left"; + layer = "top"; # above windows, below fullscreen + offset = "(16, 24)"; - padding = 4; - gap_size = 4; - frame_width = 2; + padding = 4; + gap_size = 4; + frame_width = 2; - font = "DepartureMono Nerd Font 8"; + font = "DepartureMono Nerd Font 8"; - corner_radius = 12; - icon_corner_radius = 12; + corner_radius = 12; + icon_corner_radius = 12; - progress_bar = true; - progress_bar_height = 16; + progress_bar = true; + progress_bar_height = 16; }; }; }; diff --git a/homes/modules/services/keepassxc/keepassxc.nix b/homes/modules/services/keepassxc/keepassxc.nix index 7fd6e49..b669c42 100644 --- a/homes/modules/services/keepassxc/keepassxc.nix +++ b/homes/modules/services/keepassxc/keepassxc.nix @@ -1,20 +1,19 @@ -{ config, inputs, lib, pkgs, ... }: -{ - home.packages = with pkgs; [ +{upkgs, ...}: { + home.packages = with upkgs; [ keepassxc ]; systemd.user.services.keepassxc = { Unit = { Description = "KeePassXC password manager"; - After = [ "graphical-session-pre.target" ]; - PartOf = [ "graphical-session.target" ]; + After = ["graphical-session-pre.target"]; + PartOf = ["graphical-session.target"]; }; Service = { - Description = "${pkgs.keepassxc}/bin/keepassxc"; + Description = "${upkgs.keepassxc}/bin/keepassxc"; Restart = "on-failure"; }; - Install.WantedBy = [ "graphical-session.target" ]; + Install.WantedBy = ["graphical-session.target"]; }; xdg.configFile."keepassxc/keepassxc.ini" = { diff --git a/homes/modules/services/pulse/pulse.nix b/homes/modules/services/pulse/pulse.nix index 59d1fa0..3757fde 100644 --- a/homes/modules/services/pulse/pulse.nix +++ b/homes/modules/services/pulse/pulse.nix @@ -1,7 +1,11 @@ -{ inputs, lib, pkgs, config, osConfig, ... }: -{ +{ + config, + osConfig, + ... +}: { # writes ./client.conf to ~/.config/pulse/client.conf - xdg.configFile."pulse/client.conf".text = builtins.replaceStrings + xdg.configFile."pulse/client.conf".text = + builtins.replaceStrings ["{uid}"] # make sure ur user id is set!!! ["${toString osConfig.users.users.${config.home.username}.uid}"] diff --git a/homes/modules/services/wireplumber/wireplumber.nix b/homes/modules/services/wireplumber/wireplumber.nix index 03e4957..e120486 100644 --- a/homes/modules/services/wireplumber/wireplumber.nix +++ b/homes/modules/services/wireplumber/wireplumber.nix @@ -1,5 +1,4 @@ -{ inputs, lib, pkgs, config, ... }: -{ +{...}: { # writes ./config to ~/.config/wireplumber xdg.configFile."wireplumber" = { recursive = true; diff --git a/homes/modules/shell/fastfetch/fastfetch.nix b/homes/modules/shell/fastfetch/fastfetch.nix index 987f805..1412fcc 100644 --- a/homes/modules/shell/fastfetch/fastfetch.nix +++ b/homes/modules/shell/fastfetch/fastfetch.nix @@ -1,6 +1,5 @@ -{ inputs, lib, pkgs, ... }: -{ - home.packages = with pkgs; [ +{upkgs, ...}: { + home.packages = with upkgs; [ fastfetch # displays system info! x3 ]; diff --git a/homes/modules/shell/programs.nix b/homes/modules/shell/programs.nix index b95007d..2c52a90 100644 --- a/homes/modules/shell/programs.nix +++ b/homes/modules/shell/programs.nix @@ -1,5 +1,4 @@ -{ inputs, lib, pkgs, ... }: -{ +{...}: { programs = { zoxide = { enable = true; @@ -12,14 +11,14 @@ hyfetch = { enable = true; settings = { - preset = "genderfae"; - mode = "rgb"; - backend = "fastfetch"; - color_align = { - mode = "vertical"; - }; - auto_detect_light_dark = true; - pride_month_disable = false; + preset = "genderfae"; + mode = "rgb"; + backend = "fastfetch"; + color_align = { + mode = "vertical"; + }; + auto_detect_light_dark = true; + pride_month_disable = false; }; }; }; diff --git a/homes/modules/shell/zellij/zellij.nix b/homes/modules/shell/zellij/zellij.nix index aa90116..9cd1778 100644 --- a/homes/modules/shell/zellij/zellij.nix +++ b/homes/modules/shell/zellij/zellij.nix @@ -1,8 +1,4 @@ -{ inputs, lib, pkgs, ... }: -let - unstable = inputs.nixpkgs-unstable.legacyPackages.${pkgs.stdenv.hostPlatform.system}; -in -{ +{...}: { # the theme file template for zellij is in wallust programs.zellij = { @@ -10,8 +6,8 @@ in enableZshIntegration = false; extraConfig = '' -theme "test" -show_startup_tips false + theme "test" + show_startup_tips false ''; }; } diff --git a/homes/modules/shell/zsh.nix b/homes/modules/shell/zsh.nix index 3c161f6..d1c9849 100644 --- a/homes/modules/shell/zsh.nix +++ b/homes/modules/shell/zsh.nix @@ -1,8 +1,4 @@ -{ inputs, lib, pkgs, ... }: -let - unstable = inputs.nixpkgs-unstable.legacyPackages.${pkgs.stdenv.hostPlatform.system}; -in -{ +{upkgs, ...}: { programs.zsh = { enable = true; enableCompletion = true; @@ -12,22 +8,22 @@ in plugins = [ { name = "vi-mode"; - src = pkgs.zsh-vi-mode; + src = upkgs.zsh-vi-mode; file = "share/zsh-vi-mode/zsh-vi-mode.plugin.zsh"; } ]; initContent = '' - # yazi wrapper!!! - function yazi() { - local tmp="$(mktemp -p "/run/user/$UID" -t "yazi-cwd.XXXXXX")" cwd - command yazi "$@" --cwd-file="$tmp" - IFS= read -r -d ''' cwd < "$tmp" - [ -n "$cwd" ] && [ "$cwd" != "$PWD" ] && builtin cd -- "$cwd" - rm -f -- "$tmp" - } + # yazi wrapper!!! + function yazi() { + local tmp="$(mktemp -p "/run/user/$UID" -t "yazi-cwd.XXXXXX")" cwd + command yazi "$@" --cwd-file="$tmp" + IFS= read -r -d ''' cwd < "$tmp" + [ -n "$cwd" ] && [ "$cwd" != "$PWD" ] && builtin cd -- "$cwd" + rm -f -- "$tmp" + } - hyfetch # oh i'm so gay!! :3 + hyfetch # oh i'm so gay!! :3 ''; shellAliases = { @@ -87,4 +83,3 @@ in theme = "agnoster"; }; } - diff --git a/homes/modules/themeing/hellwal/hellwal.nix b/homes/modules/themeing/hellwal/hellwal.nix index 4c0d191..4fcf069 100644 --- a/homes/modules/themeing/hellwal/hellwal.nix +++ b/homes/modules/themeing/hellwal/hellwal.nix @@ -1,20 +1,16 @@ -{ config, inputs, lib, pkgs, ... }: -let - unstable = inputs.nixpkgs-unstable.legacyPackages.${pkgs.stdenv.hostPlatform.system}; -in -{ - home.packages = with pkgs; [ +{upkgs, ...}: { + home.packages = with upkgs; [ hellwal ]; # writes ./wallust.toml to ~/.config/hellwal/wallust.toml #xdg.configFile."wallust/wallust.toml" = { - #source = ./wallust.toml; + #source = ./wallust.toml; #}; # writes ./templates to ~/.config/hellwal/templates #xdg.configFile."hellwal/templates" = { - #recursive = true; - #source = ./templates; + #recursive = true; + #source = ./templates; #}; } diff --git a/homes/modules/themeing/wallust/wallust.nix b/homes/modules/themeing/wallust/wallust.nix index 207c4ef..0b92fa3 100644 --- a/homes/modules/themeing/wallust/wallust.nix +++ b/homes/modules/themeing/wallust/wallust.nix @@ -1,9 +1,5 @@ -{ config, inputs, lib, pkgs, ... }: -let - unstable = inputs.nixpkgs-unstable.legacyPackages.${pkgs.stdenv.hostPlatform.system}; -in -{ - home.packages = with pkgs; [ +{upkgs, ...}: { + home.packages = with upkgs; [ wallust ]; diff --git a/homes/modules/wm/hyprland/hyprland.nix b/homes/modules/wm/hyprland/hyprland.nix index 0d9764c..c11fe63 100644 --- a/homes/modules/wm/hyprland/hyprland.nix +++ b/homes/modules/wm/hyprland/hyprland.nix @@ -1,9 +1,4 @@ -{ config, inputs, pkgs, ... }: -let - unstable = inputs.nixpkgs-unstable.legacyPackages.${pkgs.stdenv.hostPlatform.system}; - hyprland-git = inputs.hyprland-git.packages.${pkgs.stdenv.hostPlatform.system}; -in -{ +{...}: { wayland.windowManager.hyprland = { enable = true; package = null; @@ -37,44 +32,44 @@ in # startup programs exec-once = [ - "waybar" - "awww-daemon" + "waybar" + "awww-daemon" - "wl-paste --type text --watch cliphist store" - "wl-paste --type image --watch cliphist store" - "wl-clip-persist --clipboard regular" + "wl-paste --type text --watch cliphist store" + "wl-paste --type image --watch cliphist store" + "wl-clip-persist --clipboard regular" - "playerctld daemon" + "playerctld daemon" # swaps around the 3rd and 4th workspace because they always start - # in the wrong order - "hyprctl dispatch workspace 4 && hyprctl dispatch workspace 5 && hyprctl dispatch workspace 3 && hyprctl dispatch workspace 4 && hyprctl dispatch workspace 5 && hyprctl dispatch workspace 3 && hyprctl dispatch workspace 1" + # in the wrong order + "hyprctl dispatch workspace 4 && hyprctl dispatch workspace 5 && hyprctl dispatch workspace 3 && hyprctl dispatch workspace 4 && hyprctl dispatch workspace 5 && hyprctl dispatch workspace 3 && hyprctl dispatch workspace 1" ]; # monitor configuration monitor = [ - # note: display stream compression pending for open source - # amd gpu driver and my monitor (VG279QM) only supports DP 1.2 - # so no >240hz atm - "DP-2, 1920x1080@239.76, 0x0, 1" # main monitor - "DP-3, 1920x1080@143.61, 1920x0, 1" # second monitor - "HDMI-A-2, 2560x1440@59.95, 3840x0, 1" # third monitor (drawing tablet) - "HDMI-A-1, 1920x1080@60.00, -1920x0, 1" # tv + # note: display stream compression pending for open source + # amd gpu driver and my monitor (VG279QM) only supports DP 1.2 + # so no >240hz atm + "DP-2, 1920x1080@239.76, 0x0, 1" # main monitor + "DP-3, 1920x1080@143.61, 1920x0, 1" # second monitor + "HDMI-A-2, 2560x1440@59.95, 3840x0, 1" # third monitor (drawing tablet) + "HDMI-A-1, 1920x1080@60.00, -1920x0, 1" # tv ]; general = { - gaps_in = 5; - gaps_out = "0, 10, 10, 10"; - border_size = 2; - layout = "dwindle"; + gaps_in = 5; + gaps_out = "0, 10, 10, 10"; + border_size = 2; + layout = "dwindle"; }; plugin = { - # options at https://github.com/hyprwm/hyprland-plugins/tree/main/hyprscrolling - hyprscrolling = { - fullscreen_on_one_column = false; - column_width = 1.0; - }; + # options at https://github.com/hyprwm/hyprland-plugins/tree/main/hyprscrolling + hyprscrolling = { + fullscreen_on_one_column = false; + column_width = 1.0; + }; }; dwindle = { @@ -82,23 +77,23 @@ in }; decoration = { - rounding = 8; - - active_opacity = 1.00; - inactive_opacity = 1.00; + rounding = 8; - blur = { - xray = true; - size = 6; - passes = 2; - #vibrancy = 0.3; - special = true; - }; + active_opacity = 1.00; + inactive_opacity = 1.00; + + blur = { + xray = true; + size = 6; + passes = 2; + #vibrancy = 0.3; + special = true; + }; }; bezier = [ "workspace_curve, 0.56,0.19,0.24,0.58" - "workspace_in_curve, 0.56,0.19,0.56,0.99" + "workspace_in_curve, 0.56,0.19,0.56,0.99" ]; animation = [ @@ -109,11 +104,11 @@ in input = { repeat_rate = 50; - repeat_delay = 300; + repeat_delay = 300; - sensitivity = 0; # 0 = no modification - accel_profile = "flat"; - force_no_accel = false; # not recommended to turn on + sensitivity = 0; # 0 = no modification + accel_profile = "flat"; + force_no_accel = false; # not recommended to turn on }; cursor.no_hardware_cursors = true; @@ -125,66 +120,66 @@ in # bindings bind = [ - # binds for applications - "$mod, t, exec, $terminal" - "$mod, r, exec, $browser" - "$mod, e, exec, $explorer" + # binds for applications + "$mod, t, exec, $terminal" + "$mod, r, exec, $browser" + "$mod, e, exec, $explorer" - # binds for rofi - "$mod, d, exec, pkill -x rofi || rofi -show drun -show-icons" - "alt, tab, exec, pkill -x rofi || rofi -modi window -show window -show-icons" - "$mod, v, exec, pkill -x rofi || cliphist list | rofi -dmenu | cliphist decode | wl-copy" + # binds for rofi + "$mod, d, exec, pkill -x rofi || rofi -show drun -show-icons" + "alt, tab, exec, pkill -x rofi || rofi -modi window -show window -show-icons" + "$mod, v, exec, pkill -x rofi || cliphist list | rofi -dmenu | cliphist decode | wl-copy" - # screenshots - # todo: add active monitor - "$mod, s, exec, grim -g \"\$(slurp -d)\" - | wl-copy" # region - "$mod+alt, s, exec, grim -g \"\$(slurp -o)\" - | wl-copy" # monitor - "$mod+ctrl, s, exec, grim - | wl-copy" # all monitors + # screenshots + # todo: add active monitor + "$mod, s, exec, grim -g \"\$(slurp -d)\" - | wl-copy" # region + "$mod+alt, s, exec, grim -g \"\$(slurp -o)\" - | wl-copy" # monitor + "$mod+ctrl, s, exec, grim - | wl-copy" # all monitors - # hyprpicker - "$mod, n, exec, hyprpicker -v" - # hyprlock - "$mod+alt, y, exec, hyprlock" - # task manager - "$mod+ctrl, escape, exec, task-manager.sh" - "$mod+ctrl, grave, exec, task-manager.sh" + # hyprpicker + "$mod, n, exec, hyprpicker -v" + # hyprlock + "$mod+alt, y, exec, hyprlock" + # task manager + "$mod+ctrl, escape, exec, task-manager.sh" + "$mod+ctrl, grave, exec, task-manager.sh" - # media binds (more in binde below) - ", XF86AudioMute, exec, wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle" - ", XF86AudioPlay, exec, playerctl play-pause" - ", XF86AudioNext, exec, playerctl next" - ", XF86AudioPrev, exec, playerctl previous" - "Shift_R, XF86AudioPlay, exec, playerctl shuffle toggle" - "Shift_R, XF86AudioNext, exec, playerctl loop track" + # media binds (more in binde below) + ", XF86AudioMute, exec, wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle" + ", XF86AudioPlay, exec, playerctl play-pause" + ", XF86AudioNext, exec, playerctl next" + ", XF86AudioPrev, exec, playerctl previous" + "Shift_R, XF86AudioPlay, exec, playerctl shuffle toggle" + "Shift_R, XF86AudioNext, exec, playerctl loop track" # manage windows / session - "$mod+alt, c, killactive" - "$mod, f, fullscreen" - "$mod, x, togglefloating" - "$mod, i, togglesplit" - "$mod+Alt, Delete, exit" # exit hyprland + "$mod+alt, c, killactive" + "$mod, f, fullscreen" + "$mod, x, togglefloating" + "$mod, i, togglesplit" + "$mod+Alt, Delete, exit" # exit hyprland # move focus - "$mod, h, movefocus, l" - "$mod, j, movefocus, d" - "$mod, k, movefocus, u" - "$mod, l, movefocus, r" + "$mod, h, movefocus, l" + "$mod, j, movefocus, d" + "$mod, k, movefocus, u" + "$mod, l, movefocus, r" # move window - "$mod+alt, h, movewindow, l" - "$mod+alt, j, movewindow, d" - "$mod+alt, k, movewindow, u" - "$mod+alt, l, movewindow, r" + "$mod+alt, h, movewindow, l" + "$mod+alt, j, movewindow, d" + "$mod+alt, k, movewindow, u" + "$mod+alt, l, movewindow, r" # swap window - "$mod+ctrl, h, swapwindow, l" - "$mod+ctrl, j, swapwindow, d" - "$mod+ctrl, k, swapwindow, u" - "$mod+ctrl, l, swapwindow, r" + "$mod+ctrl, h, swapwindow, l" + "$mod+ctrl, j, swapwindow, d" + "$mod+ctrl, k, swapwindow, u" + "$mod+ctrl, l, swapwindow, r" - # move column (hyprscrolling) - "$mod, period, layoutmsg, move +col" - "$mod, comma, layoutmsg, move -col" + # move column (hyprscrolling) + "$mod, period, layoutmsg, move +col" + "$mod, comma, layoutmsg, move -col" # focus monitor #"$mod+Ctrl+Tab, 1, focusmonitor, DP-2" @@ -192,114 +187,114 @@ in #"$mod+Ctrl+Tab, 3, focusmonitor, HDMI-A-2" #"$mod+Ctrl+Tab, 4, focusmonitor, HDMI-A-1" - # move workspace to monitor + # move workspace to monitor #"$mod+Tab, 1, movecurrentworkspacetomonitor, DP-2" #"$mod+Tab, 2, movecurrentworkspacetomonitor, DP-3" #"$mod+Tab, 3, movecurrentworkspacetomonitor, HDMI-A-2" #"$mod+Tab, 4, movecurrentworkspacetomonitor, HDMI-A-1" - - # special workspace - "$mod, escape, togglespecialworkspace" - "$mod+shift, escape, movetoworkspace, special" - "$mod+alt, escape, movetoworkspacesilent, special" - "$mod, grave, togglespecialworkspace" - "$mod+shift, grave, movetoworkspace, special" - "$mod+alt, grave, movetoworkspacesilent, special" + + # special workspace + "$mod, escape, togglespecialworkspace" + "$mod+shift, escape, movetoworkspace, special" + "$mod+alt, escape, movetoworkspacesilent, special" + "$mod, grave, togglespecialworkspace" + "$mod+shift, grave, movetoworkspace, special" + "$mod+alt, grave, movetoworkspacesilent, special" # switch workspaces - "$mod, 1, workspace, 1" - "$mod, 2, workspace, 2" - "$mod, 3, workspace, 3" - "$mod, 4, workspace, 4" - "$mod, 5, workspace, 5" - "$mod, 6, workspace, 6" - "$mod, 7, workspace, 7" - "$mod, 8, workspace, 8" - "$mod, 9, workspace, 9" - "$mod, 0, workspace, 10" - "$mod, minus, workspace, 11" - "$mod, equal, workspace, 12" + "$mod, 1, workspace, 1" + "$mod, 2, workspace, 2" + "$mod, 3, workspace, 3" + "$mod, 4, workspace, 4" + "$mod, 5, workspace, 5" + "$mod, 6, workspace, 6" + "$mod, 7, workspace, 7" + "$mod, 8, workspace, 8" + "$mod, 9, workspace, 9" + "$mod, 0, workspace, 10" + "$mod, minus, workspace, 11" + "$mod, equal, workspace, 12" # move focused window to workspace - "$mod+shift, 1, movetoworkspace, 1" - "$mod+shift, 2, movetoworkspace, 2" - "$mod+shift, 3, movetoworkspace, 3" - "$mod+shift, 4, movetoworkspace, 4" - "$mod+shift, 5, movetoworkspace, 5" - "$mod+shift, 6, movetoworkspace, 6" - "$mod+shift, 7, movetoworkspace, 7" - "$mod+shift, 8, movetoworkspace, 8" - "$mod+shift, 9, movetoworkspace, 9" - "$mod+shift, 0, movetoworkspace, 10" - "$mod+shift, minus, movetoworkspace, 11" - "$mod+shift, equal, movetoworkspace, 12" + "$mod+shift, 1, movetoworkspace, 1" + "$mod+shift, 2, movetoworkspace, 2" + "$mod+shift, 3, movetoworkspace, 3" + "$mod+shift, 4, movetoworkspace, 4" + "$mod+shift, 5, movetoworkspace, 5" + "$mod+shift, 6, movetoworkspace, 6" + "$mod+shift, 7, movetoworkspace, 7" + "$mod+shift, 8, movetoworkspace, 8" + "$mod+shift, 9, movetoworkspace, 9" + "$mod+shift, 0, movetoworkspace, 10" + "$mod+shift, minus, movetoworkspace, 11" + "$mod+shift, equal, movetoworkspace, 12" # move focused window to workspace silently - "$mod+alt, 1, movetoworkspacesilent, 1" - "$mod+alt, 2, movetoworkspacesilent, 2" - "$mod+alt, 3, movetoworkspacesilent, 3" - "$mod+alt, 4, movetoworkspacesilent, 4" - "$mod+alt, 5, movetoworkspacesilent, 5" - "$mod+alt, 6, movetoworkspacesilent, 6" - "$mod+alt, 7, movetoworkspacesilent, 7" - "$mod+alt, 8, movetoworkspacesilent, 8" - "$mod+alt, 9, movetoworkspacesilent, 9" - "$mod+alt, 0, movetoworkspacesilent, 10" - "$mod+alt, minus, movetoworkspacesilent, 11" - "$mod+alt, equal, movetoworkspacesilent, 12" + "$mod+alt, 1, movetoworkspacesilent, 1" + "$mod+alt, 2, movetoworkspacesilent, 2" + "$mod+alt, 3, movetoworkspacesilent, 3" + "$mod+alt, 4, movetoworkspacesilent, 4" + "$mod+alt, 5, movetoworkspacesilent, 5" + "$mod+alt, 6, movetoworkspacesilent, 6" + "$mod+alt, 7, movetoworkspacesilent, 7" + "$mod+alt, 8, movetoworkspacesilent, 8" + "$mod+alt, 9, movetoworkspacesilent, 9" + "$mod+alt, 0, movetoworkspacesilent, 10" + "$mod+alt, minus, movetoworkspacesilent, 11" + "$mod+alt, equal, movetoworkspacesilent, 12" - # move current workspace to monitor - "$mod+shift+alt, 1, movecurrentworkspacetomonitor, DP-2" - "$mod+shift+alt, 2, movecurrentworkspacetomonitor, DP-3" - "$mod+shift+alt, 3, movecurrentworkspacetomonitor, HDMI-A-2" - "$mod+shift+alt, 4, movecurrentworkspacetomonitor, HDMI-A-1" + # move current workspace to monitor + "$mod+shift+alt, 1, movecurrentworkspacetomonitor, DP-2" + "$mod+shift+alt, 2, movecurrentworkspacetomonitor, DP-3" + "$mod+shift+alt, 3, movecurrentworkspacetomonitor, HDMI-A-2" + "$mod+shift+alt, 4, movecurrentworkspacetomonitor, HDMI-A-1" ]; # bindings for mouse bindm = [ - "$mod, mouse:272, movewindow" # left click - "$mod, mouse:273, resizewindow" # right click + "$mod, mouse:272, movewindow" # left click + "$mod, mouse:273, resizewindow" # right click ]; # repeating binds, repeats when held binde = [ ", XF86AudioRaiseVolume, exec, wpctl set-volume -l 1.0 @DEFAULT_AUDIO_SINK@ 5%+" ", XF86AudioLowerVolume, exec, wpctl set-volume -l 1.0 @DEFAULT_AUDIO_SINK@ 5%-" - "Shift_R, XF86AudioRaiseVolume, exec, playerctl volume 0.05+" - "Shift_R, XF86AudioLowerVolume, exec, playerctl volume 0.05-" + "Shift_R, XF86AudioRaiseVolume, exec, playerctl volume 0.05+" + "Shift_R, XF86AudioLowerVolume, exec, playerctl volume 0.05-" # resize window - # variable for `resizeactive` is (x, y) - # starting at 0, 0 in the top left - # meaning: - # -x = left - # +x = right - # -y = up - # +y = down - "$mod+ctrl+shift, h, resizeactive, -10 0" - "$mod+ctrl+shift, j, resizeactive, 0 10" - "$mod+ctrl+shift, k, resizeactive, 0 -10" - "$mod+ctrl+shift, l, resizeactive, 10 0" + # variable for `resizeactive` is (x, y) + # starting at 0, 0 in the top left + # meaning: + # -x = left + # +x = right + # -y = up + # +y = down + "$mod+ctrl+shift, h, resizeactive, -10 0" + "$mod+ctrl+shift, j, resizeactive, 0 10" + "$mod+ctrl+shift, k, resizeactive, 0 -10" + "$mod+ctrl+shift, l, resizeactive, 10 0" ]; layerrule = [ - #"blur, rofi" - #"ignorezero, rofi" - #"blur, aurorashell" - #"ignorealpha 0.7, aurorashell" - "blur on, match:namespace waybar" - "ignore_alpha 0, match:namespace waybar" + #"blur, rofi" + #"ignorezero, rofi" + #"blur, aurorashell" + #"ignorealpha 0.7, aurorashell" + "blur on, match:namespace waybar" + "ignore_alpha 0, match:namespace waybar" ]; env = [ - "EDITOR,auravim" + "EDITOR,auravim" - "XCURSOR_THEME,Bunny (Icy) and Strawberries" - "XCURSOR_SIZE,24" - "HYPRCURSOR_THEME,Bunny (Icy) and Strawberries" - "HYPRCURSOR_SIZE,24" + "XCURSOR_THEME,Bunny (Icy) and Strawberries" + "XCURSOR_SIZE,24" + "HYPRCURSOR_THEME,Bunny (Icy) and Strawberries" + "HYPRCURSOR_SIZE,24" - "QT_QPA_PLATFORM,wayland" + "QT_QPA_PLATFORM,wayland" ]; }; }; diff --git a/homes/modules/wm/river.nix b/homes/modules/wm/river.nix index 5c96740..3fac1a0 100644 --- a/homes/modules/wm/river.nix +++ b/homes/modules/wm/river.nix @@ -1,14 +1,10 @@ -{ config, inputs, pkgs, upkgs, ... }: -let - unstable = inputs.nixpkgs-unstable.legacyPackages.${pkgs.stdenv.hostPlatform.system}; -in -{ +{spkgs, ...}: { wayland.windowManager.river = let layout = "rivertile"; in { - enable = true; - xwayland.enable = true; - package = upkgs.river-classic; # FIX: using upkgs version as zls is broken rn ;-; + enable = true; + xwayland.enable = true; + package = spkgs.river-classic; # FIX: using spkgs version as zls is broken rn ;-; settings = let main = "Super"; @@ -22,61 +18,61 @@ in border-width = 1; spawn = [ - ''${layout}'' + ''${layout}'' - "awww-daemon" - "waybar" + "awww-daemon" + "waybar" ]; map.normal = { - "${main} C" = "close"; # close focused window - "${main}+Alt Delete" = "exit"; # exit river + "${main} C" = "close"; # close focused window + "${main}+Alt Delete" = "exit"; # exit river - # app launcher - "${main} D" = ''spawn "pkill -x rofi || rofi -show drun -show-icons"''; - "Alt Tab" = ''spawn "pkill -x rofi || rofi -modi window -show window -show-icons"''; + # app launcher + "${main} D" = ''spawn "pkill -x rofi || rofi -show drun -show-icons"''; + "Alt Tab" = ''spawn "pkill -x rofi || rofi -modi window -show window -show-icons"''; # spawn applications - "${main} T" = ''spawn "${terminal}"''; - "${main} R" = ''spawn "${browser}"''; + "${main} T" = ''spawn "${terminal}"''; + "${main} R" = ''spawn "${browser}"''; # move focused view to top of layout stack - "${main} N" = ''zoom''; + "${main} N" = ''zoom''; # focus next/previous view - "${main} J" = "focus-view previous"; - "${main} K" = "focus-view next"; - # move to next/previous output - "${main} H" = "focus-output previous"; - "${main} L" = "focus-output next"; + "${main} J" = "focus-view previous"; + "${main} K" = "focus-view next"; + # move to next/previous output + "${main} H" = "focus-output previous"; + "${main} L" = "focus-output next"; # swap next/previous view - "${main}+Alt J" = "swap previous"; - "${main}+Alt K" = "swap next"; - # send view to next/previous output - # and switch to that output (wip) - "${main}+Alt H" = "send-to-output previous"; - #"${main}+Alt H" = "focus-output previous"; - "${main}+Alt L" = "send-to-output next"; - #"${main}+Alt L" = "focus-output next"; + "${main}+Alt J" = "swap previous"; + "${main}+Alt K" = "swap next"; + # send view to next/previous output + # and switch to that output (wip) + "${main}+Alt H" = "send-to-output previous"; + #"${main}+Alt H" = "focus-output previous"; + "${main}+Alt L" = "send-to-output next"; + #"${main}+Alt L" = "focus-output next"; # move views - #"${main}+Alt H" = "move left 100"; - #"${main}+Alt J" = "move down 100"; - #"${main}+Alt K" = "move up 100"; - #"${main}+Alt L" = "move right 100"; + #"${main}+Alt H" = "move left 100"; + #"${main}+Alt J" = "move down 100"; + #"${main}+Alt K" = "move up 100"; + #"${main}+Alt L" = "move right 100"; # snap views - #"${main}+Control H" = "snap left"; - #"${main}+Control J" = "snap down"; - #"${main}+Control K" = "snap up"; - #"${main}+Control L" = "snap right"; + #"${main}+Control H" = "snap left"; + #"${main}+Control J" = "snap down"; + #"${main}+Control K" = "snap up"; + #"${main}+Control L" = "snap right"; # resize views - #"${main}+Shift H" = "resize horizontal -100"; - #"${main}+Shift J" = "resize vertical -100"; - #"${main}+Shift K" = "resize vertical 100"; - #"${main}+Shift L" = "resize horizontal 100"; + #"${main}+Shift H" = "resize horizontal -100"; + #"${main}+Shift J" = "resize vertical -100"; + #"${main}+Shift K" = "resize vertical 100"; + #"${main}+Shift L" = "resize horizontal 100"; }; }; }; diff --git a/homes/modules/wm/sway.nix b/homes/modules/wm/sway.nix index c5dd3be..36db54e 100644 --- a/homes/modules/wm/sway.nix +++ b/homes/modules/wm/sway.nix @@ -1,8 +1,4 @@ -{ config, inputs, pkgs, ... }: -let - unstable = inputs.nixpkgs-unstable.legacyPackages.${pkgs.stdenv.hostPlatform.system}; -in -{ +{config, ...}: { wayland.windowManager.sway = { enable = true; config = rec { @@ -10,43 +6,43 @@ in terminal = "kitty"; # disable sway bar - bars = [ ]; + bars = []; # set border colors #colors = { - #focused = + #focused = startup = [ - { command = "awww-daemon"; } - { command = "waybar"; } + {command = "awww-daemon";} + {command = "waybar";} ]; keybindings = let - main = config.wayland.windowManager.sway.config.modifier; - terminal = config.wayland.windowManager.sway.config.terminal; - browser = "firefox"; + main = config.wayland.windowManager.sway.config.modifier; + terminal = config.wayland.windowManager.sway.config.terminal; + browser = "firefox"; in { - "${main}+c" = "kill"; # close focused window - "${main}+Alt+Delete" = "exit"; # exit sway + "${main}+c" = "kill"; # close focused window + "${main}+Alt+Delete" = "exit"; # exit sway # open launcher "${main}+d" = "exec pkill -x rofi || rofi -show drun -show-icons"; "Alt+Tab" = "exec pkill -x rofi || rofi -modi window -show window -show-icons"; - "${main}+t" = "exec ${terminal}"; # open terminal - "${main}+r" = "exec ${browser}"; # open browser + "${main}+t" = "exec ${terminal}"; # open terminal + "${main}+r" = "exec ${browser}"; # open browser # move focus - "${main}+h" = "focus left"; - "${main}+j" = "focus down"; - "${main}+k" = "focus up"; - "${main}+l" = "focus right"; + "${main}+h" = "focus left"; + "${main}+j" = "focus down"; + "${main}+k" = "focus up"; + "${main}+l" = "focus right"; # move focused window - "${main}+Alt+h" = "move left"; - "${main}+Alt+j" = "move down"; - "${main}+Alt+k" = "move up"; - "${main}+Alt+l" = "move right"; + "${main}+Alt+h" = "move left"; + "${main}+Alt+j" = "move down"; + "${main}+Alt+k" = "move up"; + "${main}+Alt+l" = "move right"; }; }; }; diff --git a/hosts/nixarawrui/default.nix b/hosts/nixarawrui/default.nix index c3d5c29..e51ce7e 100644 --- a/hosts/nixarawrui/default.nix +++ b/hosts/nixarawrui/default.nix @@ -1,12 +1,10 @@ { inputs, - pkgs, upkgs, + spkgs, root, ... -}: let - hyprland-git = inputs.hyprland-git.packages.${pkgs.stdenv.hostPlatform.system}; -in { +}: { imports = [ ./hardware-configuration.nix @@ -19,8 +17,6 @@ in { download-buffer-size = 524288000; }; - nixpkgs.config.allowUnfree = true; - # Use the systemd-boot EFI boot loader. boot = rec { initrd.kernelModules = ["amdgpu"]; @@ -30,8 +26,8 @@ in { efi.canTouchEfiVariables = true; }; - # kernelPackages = pkgs.cachyosKernels.linuxPackages-cachyos-latest-lto-x86_64-v4; - kernelPackages = pkgs.linuxPackages_latest; + # kernelPackages = upkgs.cachyosKernels.linuxPackages-cachyos-latest-lto-x86_64-v4; + kernelPackages = upkgs.linuxPackages_latest; kernelModules = ["v4l2loopback"]; extraModulePackages = with kernelPackages; [v4l2loopback]; @@ -107,7 +103,7 @@ in { enable = true; }; - extraPortals = with pkgs; [ + extraPortals = with upkgs; [ xdg-desktop-portal-termfilechooser ]; @@ -134,7 +130,7 @@ in { enable = true; enable32Bit = true; - extraPackages = with pkgs; [ + extraPackages = with upkgs; [ libva-vdpau-driver libvdpau-va-gl ]; @@ -165,7 +161,7 @@ in { udev = { enable = true; - packages = with pkgs; [ + packages = with upkgs; [ # adds via support for keyboards and stuffs :3 (needs reboot) via @@ -208,9 +204,9 @@ in { uid = 1000; extraGroups = ["wheel" "disk" "input" "video" "audio" "networkmanager" "games"]; - shell = pkgs.zsh; + shell = upkgs.zsh; - packages = with pkgs; [ + packages = with upkgs; [ flatpak tree ]; @@ -220,14 +216,6 @@ in { }; }; - home-manager = { - useGlobalPkgs = true; - useUserPackages = true; - - users.aurora = import ../../homes/aurora; - extraSpecialArgs = {inherit inputs upkgs root;}; - }; - programs = { # nix-ld runs unpatched dynamic binaries on nixos :3 nix-ld.enable = true; @@ -251,12 +239,12 @@ in { # to work properly on hyprland hyprland = { enable = true; - package = hyprland-git.hyprland; - portalPackage = hyprland-git.xdg-desktop-portal-hyprland; + package = upkgs.hyprland-git.hyprland; + portalPackage = upkgs.hyprland-git.xdg-desktop-portal-hyprland; }; river-classic = { - package = upkgs.river-classic; # FIX: using upkgs version as zls is broken rn ;-; + package = spkgs.river-classic; # FIX: using spkgs version as zls is broken rn ;-; enable = true; }; @@ -268,7 +256,7 @@ in { # steam has to be enabled here steam = { enable = true; - package = pkgs.millennium-steam; + package = upkgs.millennium-steam; remotePlay.openFirewall = true; dedicatedServer.openFirewall = true; localNetworkGameTransfers.openFirewall = true; @@ -277,7 +265,7 @@ in { alvr = { enable = true; - package = upkgs.alvr; + package = spkgs.alvr; openFirewall = true; }; @@ -300,7 +288,7 @@ in { # List packages installed in system profile. To search, run: # $ nix search wget - environment.systemPackages = with pkgs; [ + environment.systemPackages = with upkgs; [ # linux packages!!! linuxPackages.v4l2loopback @@ -325,17 +313,17 @@ in { # waydroid needs it apparently for clipboard sharing?? wl-clipboard (waydroid.override { - python3Packages = pkgs.python312Packages; + python3Packages = upkgs.python312Packages; }) # game stuff :3 (lutris.override { - extraPkgs = pkgs: [ + extraupkgs = upkgs: [ libadwaita ]; }) (steam.override { - extraPkgs = pkgs: [ + extraupkgs = upkgs: [ nss xorg.libX11 xorg.libXScrnSaver @@ -356,7 +344,7 @@ in { # Most users should NEVER change this value after the initial install, for any reason, # even if you've upgraded your system to a new NixOS release. # - # This value does NOT affect the Nixpkgs version your packages and OS are pulled from, + # This value does NOT affect the Nixupkgs version your packages and OS are pulled from, # so changing it will NOT upgrade your system - see https://nixos.org/manual/nixos/stable/#sec-upgrading for how # to actually do that. # diff --git a/hosts/nixarawrui/hardware-configuration.nix b/hosts/nixarawrui/hardware-configuration.nix index fb2aef7..664301b 100644 --- a/hosts/nixarawrui/hardware-configuration.nix +++ b/hosts/nixarawrui/hardware-configuration.nix @@ -1,55 +1,58 @@ # 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") - ]; + config, + lib, + modulesPath, + ... +}: { + imports = [ + (modulesPath + "/installer/scan/not-detected.nix") + ]; - boot.initrd.availableKernelModules = [ "nvme" "xhci_pci" "ahci" "usb_storage" "usbhid" "sd_mod" ]; - boot.initrd.kernelModules = [ ]; - boot.kernelModules = [ "kvm-amd" ]; - boot.extraModulePackages = [ ]; + boot.initrd.availableKernelModules = ["nvme" "xhci_pci" "ahci" "usb_storage" "usbhid" "sd_mod"]; + boot.initrd.kernelModules = []; + boot.kernelModules = ["kvm-amd"]; + boot.extraModulePackages = []; - fileSystems."/" = - { device = "/dev/disk/by-uuid/257dd2c7-59b1-431e-a5a1-c7db00b3312b"; - fsType = "btrfs"; - options = [ "subvol=@" ]; - }; + fileSystems."/" = { + device = "/dev/disk/by-uuid/257dd2c7-59b1-431e-a5a1-c7db00b3312b"; + fsType = "btrfs"; + options = ["subvol=@"]; + }; - fileSystems."/home" = - { device = "/dev/disk/by-uuid/257dd2c7-59b1-431e-a5a1-c7db00b3312b"; - fsType = "btrfs"; - options = [ "subvol=@home" ]; - }; + fileSystems."/home" = { + device = "/dev/disk/by-uuid/257dd2c7-59b1-431e-a5a1-c7db00b3312b"; + fsType = "btrfs"; + options = ["subvol=@home"]; + }; - fileSystems."/nix" = - { device = "/dev/disk/by-uuid/257dd2c7-59b1-431e-a5a1-c7db00b3312b"; - fsType = "btrfs"; - options = [ "subvol=@nix" ]; - }; + fileSystems."/nix" = { + device = "/dev/disk/by-uuid/257dd2c7-59b1-431e-a5a1-c7db00b3312b"; + fsType = "btrfs"; + options = ["subvol=@nix"]; + }; - fileSystems."/games" = - { device = "/dev/disk/by-uuid/257dd2c7-59b1-431e-a5a1-c7db00b3312b"; - fsType = "btrfs"; - options = [ "subvol=@games" ]; - }; + fileSystems."/games" = { + device = "/dev/disk/by-uuid/257dd2c7-59b1-431e-a5a1-c7db00b3312b"; + fsType = "btrfs"; + options = ["subvol=@games"]; + }; - fileSystems."/data" = - { device = "/dev/disk/by-uuid/257dd2c7-59b1-431e-a5a1-c7db00b3312b"; - fsType = "btrfs"; - options = [ "subvol=@data" ]; - }; + fileSystems."/data" = { + device = "/dev/disk/by-uuid/257dd2c7-59b1-431e-a5a1-c7db00b3312b"; + fsType = "btrfs"; + options = ["subvol=@data"]; + }; - fileSystems."/boot" = - { device = "/dev/disk/by-uuid/63DC-1AEB"; - fsType = "vfat"; - options = [ "fmask=0077" "dmask=0077" ]; - }; + fileSystems."/boot" = { + device = "/dev/disk/by-uuid/63DC-1AEB"; + fsType = "vfat"; + options = ["fmask=0077" "dmask=0077"]; + }; - swapDevices = [ ]; + swapDevices = []; # 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 diff --git a/hosts/nixarawrui/modules/amdgpu-ignore-ctx-privileges.nix b/hosts/nixarawrui/modules/amdgpu-ignore-ctx-privileges.nix index 8498061..3174fb2 100644 --- a/hosts/nixarawrui/modules/amdgpu-ignore-ctx-privileges.nix +++ b/hosts/nixarawrui/modules/amdgpu-ignore-ctx-privileges.nix @@ -1,5 +1,5 @@ { - pkgs, + upkgs, lib, config, ... @@ -12,20 +12,22 @@ in { }; config = lib.mkIf enabled { - nixpkgs.overlays = [ - (self: super: { - amdgpu-ignore-ctx-privileges = super.fetchpatch { - name = "cap_sys_nice_begone.patch"; - url = "https://github.com/Frogging-Family/community-patches/raw/master/linux61-tkg/cap_sys_nice_begone.mypatch"; - hash = "sha256-Y3a0+x2xvHsfLax/uwycdJf3xLxvVfkfDVqjkxNaYEo="; - }; - }) - ]; + nixpkgs.channels.default = { + upkgs.overlays = [ + (self: super: { + amdgpu-ignore-ctx-privileges = super.fetchpatch { + name = "cap_sys_nice_begone.patch"; + url = "https://github.com/Frogging-Family/community-patches/raw/master/linux61-tkg/cap_sys_nice_begone.mypatch"; + hash = "sha256-Y3a0+x2xvHsfLax/uwycdJf3xLxvVfkfDVqjkxNaYEo="; + }; + }) + ]; + }; boot.kernelPatches = [ { name = "amdgpu-ignore-ctx-privileges"; - patch = pkgs.amdgpu-ignore-ctx-privileges; + patch = upkgs.amdgpu-ignore-ctx-privileges; } ]; }; diff --git a/nixpkgs.nix b/nixpkgs.nix new file mode 100644 index 0000000..93f40f4 --- /dev/null +++ b/nixpkgs.nix @@ -0,0 +1,28 @@ +{ + inputs, + system, + ... +}: { + nixpkgs.channels.default = { + # nixpkgs-unstable + upkgs = { + inherit system; + source = inputs.nixpkgs-unstable; + overlays = with inputs; [ + cachyos.overlays.pinned + millennium.overlays.default + + (import ./overlays.nix {inherit inputs;}) + ]; + + config.allowUnfree = true; + }; + # nixpkgs-staging + spkgs = { + inherit system; + source = inputs.nixpkgs-staging; + overlays = []; + config.allowUnfree = true; + }; + }; +} diff --git a/overlays.nix b/overlays.nix index 8d28bdd..30fe392 100644 --- a/overlays.nix +++ b/overlays.nix @@ -1,3 +1,9 @@ +# NOTE: `system` is provided by Cerulean +{ + inputs, + system, + ... +}: [ (self: super: { ekphos = import ../packages/ekphos { pkgs = super; @@ -10,4 +16,7 @@ }) ]; }); + + hyprland-git = inputs.hyprland-git.packages.${system}; }) +] diff --git a/snow.nix b/snow.nix new file mode 100644 index 0000000..af178fa --- /dev/null +++ b/snow.nix @@ -0,0 +1,23 @@ +{cerulean, ...} @ inputs: +cerulean.mkNexus ./. (self: { + nexus = { + specialArgs = {inherit inputs;}; + + extraPkgConfig = { + config.allowUnfree = true; + }; + + extraModules = with inputs; [ + home-manager.nixosModules.home-manager + ]; + + nodes = { + nixarawrui = { + system = "x86_64-linux"; + extraModules = with inputs; [ + sddm-silent.nixosModules.default + ]; + }; + }; + }; +}) From 46f46f547aced007ccab8ba39d2b6b4def8425f7 Mon Sep 17 00:00:00 2001 From: foxora Date: Fri, 13 Feb 2026 14:37:47 +0000 Subject: [PATCH 15/36] added other font --- homes/aurora/default.nix | 1 + 1 file changed, 1 insertion(+) diff --git a/homes/aurora/default.nix b/homes/aurora/default.nix index 163ff2a..ceb60e2 100644 --- a/homes/aurora/default.nix +++ b/homes/aurora/default.nix @@ -71,6 +71,7 @@ # fonts nerd-fonts.departure-mono # pretty pixel art font i love!! x3 + nerd-fonts.jetbrains-mono # cli / tui tools and commands! eza # replaces: ls (rust) From 04a898080dc923ad4b54aeb8ef88add2db73a2f4 Mon Sep 17 00:00:00 2001 From: foxora Date: Fri, 13 Feb 2026 14:37:47 +0000 Subject: [PATCH 16/36] added other font --- homes/aurora/default.nix | 1 + 1 file changed, 1 insertion(+) diff --git a/homes/aurora/default.nix b/homes/aurora/default.nix index 163ff2a..ceb60e2 100644 --- a/homes/aurora/default.nix +++ b/homes/aurora/default.nix @@ -71,6 +71,7 @@ # fonts nerd-fonts.departure-mono # pretty pixel art font i love!! x3 + nerd-fonts.jetbrains-mono # cli / tui tools and commands! eza # replaces: ls (rust) From b77a284b55b3237c3835b3d45b73ee113ad1ccfd Mon Sep 17 00:00:00 2001 From: foxora Date: Fri, 13 Feb 2026 17:30:38 +0000 Subject: [PATCH 17/36] remove old completion engine config --- .../neovim/lua/lsp/completion.lua.old | 203 ------------------ homes/modules/programs/neovim/lua/lsp/lsp.lua | 1 - 2 files changed, 204 deletions(-) delete mode 100644 homes/modules/programs/neovim/lua/lsp/completion.lua.old diff --git a/homes/modules/programs/neovim/lua/lsp/completion.lua.old b/homes/modules/programs/neovim/lua/lsp/completion.lua.old deleted file mode 100644 index f40853f..0000000 --- a/homes/modules/programs/neovim/lua/lsp/completion.lua.old +++ /dev/null @@ -1,203 +0,0 @@ ----packadd + after/plugin ----@type fun(names: string[]|string) -local load_w_after_plugin = require('nixCatsUtils.lzUtils').make_load_with_after({ "plugin" }) - --- NOTE: packadd doesnt load after directories. --- hence, the above function that you can get from luaUtils that exists to make that easy. - -return { - { - "cmp-buffer", - on_plugin = { "nvim-cmp" }, - load = load_w_after_plugin, - }, - { - "cmp-cmdline", - on_plugin = { "nvim-cmp" }, - load = load_w_after_plugin, - }, - { - "cmp-cmdline-history", - on_plugin = { "nvim-cmp" }, - load = load_w_after_plugin, - }, - { - "cmp-nvim-lsp", - on_plugin = { "nvim-cmp" }, - dep_of = { "nvim-lspconfig" }, - load = load_w_after_plugin, - }, - { - "cmp-nvim-lsp-signature-help", - on_plugin = { "nvim-cmp" }, - load = load_w_after_plugin, - }, - { - "cmp-nvim-lua", - on_plugin = { "nvim-cmp" }, - load = load_w_after_plugin, - }, - { - "cmp-path", - on_plugin = { "nvim-cmp" }, - load = load_w_after_plugin, - }, - { - "cmp_luasnip", - on_plugin = { "nvim-cmp" }, - load = load_w_after_plugin, - }, - { - "friendly-snippets", - dep_of = { "nvim-cmp" }, - load = load_w_after_plugin, - }, - { - "lspkind.nvim", - dep_of = { "nvim-cmp" }, - load = load_w_after_plugin, - }, - { - "luasnip", - dep_of = { "nvim-cmp" }, - after = function (plugin) - local luasnip = require 'luasnip' - require('luasnip.loaders.from_vscode').lazy_load() - luasnip.config.setup {} - - local ls = require('luasnip') - - vim.keymap.set({ "i", "s" }, "", function() - if ls.choice_active() then - ls.change_choice(1) - end - end) - end, - }, - { - "nvim-cmp", - -- cmd = { "" }, - event = { "DeferredUIEnter" }, - on_require = { "cmp" }, - -- ft = "", - -- keys = "", - -- colorscheme = "", - after = function (plugin) - -- [[ Configure nvim-cmp ]] - -- See `:help cmp` - local cmp = require 'cmp' - local luasnip = require 'luasnip' - local lspkind = require 'lspkind' - - cmp.setup { - formatting = { - format = lspkind.cmp_format { - mode = 'text', - with_text = true, - maxwidth = 50, -- prevent the popup from showing more than provided characters (e.g 50 will not show more than 50 characters) - ellipsis_char = '...', -- when popup menu exceed maxwidth, the truncated part would show ellipsis_char instead (must define maxwidth first) - - menu = { - buffer = '[BUF]', - nvim_lsp = '[LSP]', - nvim_lsp_signature_help = '[LSP]', - nvim_lsp_document_symbol = '[LSP]', - nvim_lua = '[API]', - path = '[PATH]', - luasnip = '[SNIP]', - }, - }, - }, - snippet = { - expand = function(args) - luasnip.lsp_expand(args.body) - end, - }, - mapping = cmp.mapping.preset.insert { - [''] = cmp.mapping.scroll_docs(-4), - [''] = cmp.mapping.scroll_docs(4), - [''] = cmp.mapping.complete {}, - [''] = cmp.mapping.confirm { - behavior = cmp.ConfirmBehavior.Replace, - select = true, - }, - [''] = cmp.mapping(function(fallback) - if cmp.visible() then - cmp.select_next_item() - elseif luasnip.expand_or_locally_jumpable() then - luasnip.expand_or_jump() - else - fallback() - end - end, { 'i', 's' }), - [''] = cmp.mapping(function(fallback) - if cmp.visible() then - cmp.select_prev_item() - elseif luasnip.locally_jumpable(-1) then - luasnip.jump(-1) - else - fallback() - end - end, { 'i', 's' }), - }, - - sources = cmp.config.sources { - -- The insertion order influences the priority of the sources - { name = 'nvim_lsp'--[[ , keyword_length = 3 ]] }, - { name = 'nvim_lsp_signature_help'--[[ , keyword_length = 3 ]]}, - { name = 'path' }, - { name = 'luasnip' }, - { name = 'buffer' }, - }, - enabled = function() - return vim.bo[0].buftype ~= 'prompt' - end, - experimental = { - native_menu = false, - ghost_text = false, - }, - } - - cmp.setup.filetype('lua', { - sources = cmp.config.sources { - { name = 'nvim_lua' }, - { name = 'nvim_lsp'--[[ , keyword_length = 3 ]]}, - { name = 'nvim_lsp_signature_help'--[[ , keyword_length = 3 ]]}, - { name = 'path' }, - { name = 'luasnip' }, - { name = 'buffer' }, - },{ - { - name = 'cmdline', - option = { - ignore_cmds = { 'Man', '!' }, - }, - }, - }, - }) - - -- Use buffer source for `/` and `?` (if you enabled `native_menu`, this won't work anymore). - cmp.setup.cmdline({ '/', '?' }, { - mapping = cmp.mapping.preset.cmdline(), - sources = { - { name = 'nvim_lsp_document_symbol'--[[ , keyword_length = 3 ]]}, - { name = 'buffer' }, - { name = 'cmdline_history' }, - }, - view = { - entries = { name = 'wildmenu', separator = '|' }, - }, - }) - - -- Use cmdline & path source for ':' (if you enabled `native_menu`, this won't work anymore). - cmp.setup.cmdline(':', { - mapping = cmp.mapping.preset.cmdline(), - sources = cmp.config.sources { - { name = 'cmdline' }, - -- { name = 'cmdline_history' }, - { name = 'path' }, - }, - }) - end, - }, -} diff --git a/homes/modules/programs/neovim/lua/lsp/lsp.lua b/homes/modules/programs/neovim/lua/lsp/lsp.lua index 6548bf3..496de69 100644 --- a/homes/modules/programs/neovim/lua/lsp/lsp.lua +++ b/homes/modules/programs/neovim/lua/lsp/lsp.lua @@ -120,4 +120,3 @@ require("lze").load { end, }, } - From ed8eae1e02a7ee0f39b6de4ecdc32929b8964c5a Mon Sep 17 00:00:00 2001 From: foxora Date: Fri, 13 Feb 2026 17:30:38 +0000 Subject: [PATCH 18/36] remove old completion engine config --- .../neovim/lua/lsp/completion.lua.old | 203 ------------------ homes/modules/programs/neovim/lua/lsp/lsp.lua | 1 - 2 files changed, 204 deletions(-) delete mode 100644 homes/modules/programs/neovim/lua/lsp/completion.lua.old diff --git a/homes/modules/programs/neovim/lua/lsp/completion.lua.old b/homes/modules/programs/neovim/lua/lsp/completion.lua.old deleted file mode 100644 index f40853f..0000000 --- a/homes/modules/programs/neovim/lua/lsp/completion.lua.old +++ /dev/null @@ -1,203 +0,0 @@ ----packadd + after/plugin ----@type fun(names: string[]|string) -local load_w_after_plugin = require('nixCatsUtils.lzUtils').make_load_with_after({ "plugin" }) - --- NOTE: packadd doesnt load after directories. --- hence, the above function that you can get from luaUtils that exists to make that easy. - -return { - { - "cmp-buffer", - on_plugin = { "nvim-cmp" }, - load = load_w_after_plugin, - }, - { - "cmp-cmdline", - on_plugin = { "nvim-cmp" }, - load = load_w_after_plugin, - }, - { - "cmp-cmdline-history", - on_plugin = { "nvim-cmp" }, - load = load_w_after_plugin, - }, - { - "cmp-nvim-lsp", - on_plugin = { "nvim-cmp" }, - dep_of = { "nvim-lspconfig" }, - load = load_w_after_plugin, - }, - { - "cmp-nvim-lsp-signature-help", - on_plugin = { "nvim-cmp" }, - load = load_w_after_plugin, - }, - { - "cmp-nvim-lua", - on_plugin = { "nvim-cmp" }, - load = load_w_after_plugin, - }, - { - "cmp-path", - on_plugin = { "nvim-cmp" }, - load = load_w_after_plugin, - }, - { - "cmp_luasnip", - on_plugin = { "nvim-cmp" }, - load = load_w_after_plugin, - }, - { - "friendly-snippets", - dep_of = { "nvim-cmp" }, - load = load_w_after_plugin, - }, - { - "lspkind.nvim", - dep_of = { "nvim-cmp" }, - load = load_w_after_plugin, - }, - { - "luasnip", - dep_of = { "nvim-cmp" }, - after = function (plugin) - local luasnip = require 'luasnip' - require('luasnip.loaders.from_vscode').lazy_load() - luasnip.config.setup {} - - local ls = require('luasnip') - - vim.keymap.set({ "i", "s" }, "", function() - if ls.choice_active() then - ls.change_choice(1) - end - end) - end, - }, - { - "nvim-cmp", - -- cmd = { "" }, - event = { "DeferredUIEnter" }, - on_require = { "cmp" }, - -- ft = "", - -- keys = "", - -- colorscheme = "", - after = function (plugin) - -- [[ Configure nvim-cmp ]] - -- See `:help cmp` - local cmp = require 'cmp' - local luasnip = require 'luasnip' - local lspkind = require 'lspkind' - - cmp.setup { - formatting = { - format = lspkind.cmp_format { - mode = 'text', - with_text = true, - maxwidth = 50, -- prevent the popup from showing more than provided characters (e.g 50 will not show more than 50 characters) - ellipsis_char = '...', -- when popup menu exceed maxwidth, the truncated part would show ellipsis_char instead (must define maxwidth first) - - menu = { - buffer = '[BUF]', - nvim_lsp = '[LSP]', - nvim_lsp_signature_help = '[LSP]', - nvim_lsp_document_symbol = '[LSP]', - nvim_lua = '[API]', - path = '[PATH]', - luasnip = '[SNIP]', - }, - }, - }, - snippet = { - expand = function(args) - luasnip.lsp_expand(args.body) - end, - }, - mapping = cmp.mapping.preset.insert { - [''] = cmp.mapping.scroll_docs(-4), - [''] = cmp.mapping.scroll_docs(4), - [''] = cmp.mapping.complete {}, - [''] = cmp.mapping.confirm { - behavior = cmp.ConfirmBehavior.Replace, - select = true, - }, - [''] = cmp.mapping(function(fallback) - if cmp.visible() then - cmp.select_next_item() - elseif luasnip.expand_or_locally_jumpable() then - luasnip.expand_or_jump() - else - fallback() - end - end, { 'i', 's' }), - [''] = cmp.mapping(function(fallback) - if cmp.visible() then - cmp.select_prev_item() - elseif luasnip.locally_jumpable(-1) then - luasnip.jump(-1) - else - fallback() - end - end, { 'i', 's' }), - }, - - sources = cmp.config.sources { - -- The insertion order influences the priority of the sources - { name = 'nvim_lsp'--[[ , keyword_length = 3 ]] }, - { name = 'nvim_lsp_signature_help'--[[ , keyword_length = 3 ]]}, - { name = 'path' }, - { name = 'luasnip' }, - { name = 'buffer' }, - }, - enabled = function() - return vim.bo[0].buftype ~= 'prompt' - end, - experimental = { - native_menu = false, - ghost_text = false, - }, - } - - cmp.setup.filetype('lua', { - sources = cmp.config.sources { - { name = 'nvim_lua' }, - { name = 'nvim_lsp'--[[ , keyword_length = 3 ]]}, - { name = 'nvim_lsp_signature_help'--[[ , keyword_length = 3 ]]}, - { name = 'path' }, - { name = 'luasnip' }, - { name = 'buffer' }, - },{ - { - name = 'cmdline', - option = { - ignore_cmds = { 'Man', '!' }, - }, - }, - }, - }) - - -- Use buffer source for `/` and `?` (if you enabled `native_menu`, this won't work anymore). - cmp.setup.cmdline({ '/', '?' }, { - mapping = cmp.mapping.preset.cmdline(), - sources = { - { name = 'nvim_lsp_document_symbol'--[[ , keyword_length = 3 ]]}, - { name = 'buffer' }, - { name = 'cmdline_history' }, - }, - view = { - entries = { name = 'wildmenu', separator = '|' }, - }, - }) - - -- Use cmdline & path source for ':' (if you enabled `native_menu`, this won't work anymore). - cmp.setup.cmdline(':', { - mapping = cmp.mapping.preset.cmdline(), - sources = cmp.config.sources { - { name = 'cmdline' }, - -- { name = 'cmdline_history' }, - { name = 'path' }, - }, - }) - end, - }, -} diff --git a/homes/modules/programs/neovim/lua/lsp/lsp.lua b/homes/modules/programs/neovim/lua/lsp/lsp.lua index 6548bf3..496de69 100644 --- a/homes/modules/programs/neovim/lua/lsp/lsp.lua +++ b/homes/modules/programs/neovim/lua/lsp/lsp.lua @@ -120,4 +120,3 @@ require("lze").load { end, }, } - From c79b2ed2aeadc4dab417dd17c7016ea102f54764 Mon Sep 17 00:00:00 2001 From: foxora Date: Fri, 13 Feb 2026 17:32:36 +0000 Subject: [PATCH 19/36] i hate discord --- homes/modules/programs/neovim/lua/plugins/init.lua | 1 - homes/modules/programs/neovim/lua/plugins/neocord.lua | 5 ----- homes/modules/programs/neovim/nixcats.nix | 4 ---- 3 files changed, 10 deletions(-) delete mode 100644 homes/modules/programs/neovim/lua/plugins/neocord.lua diff --git a/homes/modules/programs/neovim/lua/plugins/init.lua b/homes/modules/programs/neovim/lua/plugins/init.lua index 20c38db..c45bebd 100644 --- a/homes/modules/programs/neovim/lua/plugins/init.lua +++ b/homes/modules/programs/neovim/lua/plugins/init.lua @@ -4,5 +4,4 @@ require("lze").load { { import = "plugins.treesitter", }, { import = "plugins.fyler", }, { import = "plugins.mini-hipatterns", }, - --{ import = "plugins.neocord", }, } diff --git a/homes/modules/programs/neovim/lua/plugins/neocord.lua b/homes/modules/programs/neovim/lua/plugins/neocord.lua deleted file mode 100644 index 5efb242..0000000 --- a/homes/modules/programs/neovim/lua/plugins/neocord.lua +++ /dev/null @@ -1,5 +0,0 @@ -return { - { - "neocord", - }, -} diff --git a/homes/modules/programs/neovim/nixcats.nix b/homes/modules/programs/neovim/nixcats.nix index db28c1a..3f16dd3 100644 --- a/homes/modules/programs/neovim/nixcats.nix +++ b/homes/modules/programs/neovim/nixcats.nix @@ -135,9 +135,6 @@ in { nvim-jdtls ]; }; - discord = with pkgs.vimPlugins; [ - neocord # discord presence plugin :3 - ]; }; # shared libraries to be added to LD_LIBRARY_PATH @@ -210,7 +207,6 @@ in { lsp = true; completion = true; treesitter = true; - discord = false; lang = { lua = true; From cb3e48d646bdfab9d0fbd79b826597e26d431001 Mon Sep 17 00:00:00 2001 From: foxora Date: Fri, 13 Feb 2026 17:32:36 +0000 Subject: [PATCH 20/36] i hate discord --- homes/modules/programs/neovim/lua/plugins/init.lua | 1 - homes/modules/programs/neovim/lua/plugins/neocord.lua | 5 ----- homes/modules/programs/neovim/nixcats.nix | 4 ---- 3 files changed, 10 deletions(-) delete mode 100644 homes/modules/programs/neovim/lua/plugins/neocord.lua diff --git a/homes/modules/programs/neovim/lua/plugins/init.lua b/homes/modules/programs/neovim/lua/plugins/init.lua index 20c38db..c45bebd 100644 --- a/homes/modules/programs/neovim/lua/plugins/init.lua +++ b/homes/modules/programs/neovim/lua/plugins/init.lua @@ -4,5 +4,4 @@ require("lze").load { { import = "plugins.treesitter", }, { import = "plugins.fyler", }, { import = "plugins.mini-hipatterns", }, - --{ import = "plugins.neocord", }, } diff --git a/homes/modules/programs/neovim/lua/plugins/neocord.lua b/homes/modules/programs/neovim/lua/plugins/neocord.lua deleted file mode 100644 index 5efb242..0000000 --- a/homes/modules/programs/neovim/lua/plugins/neocord.lua +++ /dev/null @@ -1,5 +0,0 @@ -return { - { - "neocord", - }, -} diff --git a/homes/modules/programs/neovim/nixcats.nix b/homes/modules/programs/neovim/nixcats.nix index db28c1a..3f16dd3 100644 --- a/homes/modules/programs/neovim/nixcats.nix +++ b/homes/modules/programs/neovim/nixcats.nix @@ -135,9 +135,6 @@ in { nvim-jdtls ]; }; - discord = with pkgs.vimPlugins; [ - neocord # discord presence plugin :3 - ]; }; # shared libraries to be added to LD_LIBRARY_PATH @@ -210,7 +207,6 @@ in { lsp = true; completion = true; treesitter = true; - discord = false; lang = { lua = true; From 8e3e30716d5ab7e28caa8473756283dea946072f Mon Sep 17 00:00:00 2001 From: foxora Date: Fri, 13 Feb 2026 17:34:05 +0000 Subject: [PATCH 21/36] not using lz.n --- .../neovim/lua/nixCatsUtils/lzUtils.lua | 135 ------------------ 1 file changed, 135 deletions(-) delete mode 100644 homes/modules/programs/neovim/lua/nixCatsUtils/lzUtils.lua diff --git a/homes/modules/programs/neovim/lua/nixCatsUtils/lzUtils.lua b/homes/modules/programs/neovim/lua/nixCatsUtils/lzUtils.lua deleted file mode 100644 index 0667276..0000000 --- a/homes/modules/programs/neovim/lua/nixCatsUtils/lzUtils.lua +++ /dev/null @@ -1,135 +0,0 @@ ---[[ - This directory is the luaUtils template. - You can choose what things from it that you would like to use. - And then delete the rest. - Everything in this directory is optional. ---]] - -local M = {} --- NOTE: This file contains 2 utilities for making good use of lze and lz.n with nixCats --- The function for loading after directories is useful for both plugins, and also for lazy loading without a plugin, --- but the custom handler will only work with lze. --- If you dont use these plugins, you probably don't need this file. - ----This function is useful for sourcing the after directories of lazily loaded plugins ----because vim.cmd.packadd does not do this for you. ---- ----This might be useful when doing lazy loading the vanilla way ----as well as when using plugins like lz.n for lazy loading ----It is primarily useful for lazily loading nvim-cmp sources, ----as they often rely on the after directory to work ---- ----Recieves the names of directories from a plugin's after directory ----that you wish to source files from. ----Will return a load function that can take a name, or list of names, ----and will load a plugin and its after directories. ----The function returned is a suitable substitute for the load field of a plugin spec. ---- ----Only makes sense for plugins added via optionalPlugins ----or some other opt directory on your packpath ---- ----e.g. in the following example: ----load_with_after_plugin will load the plugin names it is given, and their after/plugin dir ---- ----local load_with_after_plugin = require('nixCatsUtils').make_load_with_after({ 'plugin' }) ----load_with_after_plugin('some_plugin') ----@overload fun(dirs: string[]|string): fun(names: string|string[]) ----It also optionally recieves a function that should load a plugin and return its path ----for if the plugin is not on the packpath, or return nil ----to load from the packpath or nixCats list as normal ----@overload fun(dirs: string[]|string, load: fun(name: string):string|nil): fun(names: string|string[]) -function M.make_load_with_after(dirs, load) - dirs = (type(dirs) == "table" and dirs) or { dirs } - local fromPackpath = function(name) - for _, packpath in ipairs(vim.opt.packpath:get()) do - local plugin_path = vim.fn.globpath(packpath, "pack/*/opt/" .. name, nil, true, true) - if plugin_path[1] then - return plugin_path[1] - end - end - return nil - end - ---@param plugin_names string[]|string - return function(plugin_names) - local names = type(plugin_names) == "table" and plugin_names or { plugin_names } - local to_source = {} - for _, name in ipairs(names) do - if type(name) == "string" then - local path = (type(load) == "function" and load(name)) or nil - if type(path) == "string" then - table.insert(to_source, { name = name, path = path }) - else - local ok, err = pcall(vim.cmd.packadd, name) - if ok then - table.insert(to_source, { name = name, path = nil }) - else - vim.notify( - '"packadd ' - .. name - .. '" failed, and path provided by custom load function (if provided) was not a string\n' - .. err, - vim.log.levels.WARN, - { title = "nixCatsUtils.load_with_after" } - ) - end - end - else - vim.notify( - "plugin name was not a string and was instead of value:\n" .. vim.inspect(name), - vim.log.levels.WARN, - { title = "nixCatsUtils.load_with_after" } - ) - end - end - for _, info in pairs(to_source) do - local plugpath = info.path or vim.tbl_get(package.loaded, "nixCats", "pawsible", "allPlugins", "opt", info.name) or fromPackpath(info.name) - if type(plugpath) == "string" then - local afterpath = plugpath .. "/after" - for _, dir in ipairs(dirs) do - if vim.fn.isdirectory(afterpath) == 1 then - local plugin_dir = afterpath .. "/" .. dir - if vim.fn.isdirectory(plugin_dir) == 1 then - local files = vim.fn.glob(plugin_dir .. "/*", false, true) - for _, file in ipairs(files) do - if vim.fn.filereadable(file) == 1 then - vim.cmd("source " .. file) - end - end - end - end - end - end - end - end -end - --- A nixCats specific lze handler that you can use to conditionally enable by category easier. --- at the start of your config, register with --- require('lze').register_handlers(require('nixCatsUtils.lzUtils').for_cat) --- before any calls to require('lze').load using the handler have been made. --- accepts: --- for_cat = { "your" "cat" }; for_cat = { cat = { "your" "cat" }, default = bool } --- for_cat = "your.cat"; for_cat = { cat = "your.cat", default = bool } --- where default is an alternate value for when nixCats was NOT used to install the config -M.for_cat = { - spec_field = "for_cat", - set_lazy = false, - modify = function(plugin) - if type(plugin.for_cat) == "table" then - if plugin.for_cat.cat ~= nil then - if vim.g[ [[nixCats-special-rtp-entry-nixCats]] ] ~= nil then - plugin.enabled = (nixCats(plugin.for_cat.cat) and true) or false - else - plugin.enabled = nixCats(plugin.for_cat.default) - end - else - plugin.enabled = (nixCats(plugin.for_cat) and true) or false - end - else - plugin.enabled = (nixCats(plugin.for_cat) and true) or false - end - return plugin - end, -} - -return M From 48216ab16f2146b5bcc3f29f4b459560ca4d3b4b Mon Sep 17 00:00:00 2001 From: foxora Date: Fri, 13 Feb 2026 17:34:05 +0000 Subject: [PATCH 22/36] not using lz.n --- .../neovim/lua/nixCatsUtils/lzUtils.lua | 135 ------------------ 1 file changed, 135 deletions(-) delete mode 100644 homes/modules/programs/neovim/lua/nixCatsUtils/lzUtils.lua diff --git a/homes/modules/programs/neovim/lua/nixCatsUtils/lzUtils.lua b/homes/modules/programs/neovim/lua/nixCatsUtils/lzUtils.lua deleted file mode 100644 index 0667276..0000000 --- a/homes/modules/programs/neovim/lua/nixCatsUtils/lzUtils.lua +++ /dev/null @@ -1,135 +0,0 @@ ---[[ - This directory is the luaUtils template. - You can choose what things from it that you would like to use. - And then delete the rest. - Everything in this directory is optional. ---]] - -local M = {} --- NOTE: This file contains 2 utilities for making good use of lze and lz.n with nixCats --- The function for loading after directories is useful for both plugins, and also for lazy loading without a plugin, --- but the custom handler will only work with lze. --- If you dont use these plugins, you probably don't need this file. - ----This function is useful for sourcing the after directories of lazily loaded plugins ----because vim.cmd.packadd does not do this for you. ---- ----This might be useful when doing lazy loading the vanilla way ----as well as when using plugins like lz.n for lazy loading ----It is primarily useful for lazily loading nvim-cmp sources, ----as they often rely on the after directory to work ---- ----Recieves the names of directories from a plugin's after directory ----that you wish to source files from. ----Will return a load function that can take a name, or list of names, ----and will load a plugin and its after directories. ----The function returned is a suitable substitute for the load field of a plugin spec. ---- ----Only makes sense for plugins added via optionalPlugins ----or some other opt directory on your packpath ---- ----e.g. in the following example: ----load_with_after_plugin will load the plugin names it is given, and their after/plugin dir ---- ----local load_with_after_plugin = require('nixCatsUtils').make_load_with_after({ 'plugin' }) ----load_with_after_plugin('some_plugin') ----@overload fun(dirs: string[]|string): fun(names: string|string[]) ----It also optionally recieves a function that should load a plugin and return its path ----for if the plugin is not on the packpath, or return nil ----to load from the packpath or nixCats list as normal ----@overload fun(dirs: string[]|string, load: fun(name: string):string|nil): fun(names: string|string[]) -function M.make_load_with_after(dirs, load) - dirs = (type(dirs) == "table" and dirs) or { dirs } - local fromPackpath = function(name) - for _, packpath in ipairs(vim.opt.packpath:get()) do - local plugin_path = vim.fn.globpath(packpath, "pack/*/opt/" .. name, nil, true, true) - if plugin_path[1] then - return plugin_path[1] - end - end - return nil - end - ---@param plugin_names string[]|string - return function(plugin_names) - local names = type(plugin_names) == "table" and plugin_names or { plugin_names } - local to_source = {} - for _, name in ipairs(names) do - if type(name) == "string" then - local path = (type(load) == "function" and load(name)) or nil - if type(path) == "string" then - table.insert(to_source, { name = name, path = path }) - else - local ok, err = pcall(vim.cmd.packadd, name) - if ok then - table.insert(to_source, { name = name, path = nil }) - else - vim.notify( - '"packadd ' - .. name - .. '" failed, and path provided by custom load function (if provided) was not a string\n' - .. err, - vim.log.levels.WARN, - { title = "nixCatsUtils.load_with_after" } - ) - end - end - else - vim.notify( - "plugin name was not a string and was instead of value:\n" .. vim.inspect(name), - vim.log.levels.WARN, - { title = "nixCatsUtils.load_with_after" } - ) - end - end - for _, info in pairs(to_source) do - local plugpath = info.path or vim.tbl_get(package.loaded, "nixCats", "pawsible", "allPlugins", "opt", info.name) or fromPackpath(info.name) - if type(plugpath) == "string" then - local afterpath = plugpath .. "/after" - for _, dir in ipairs(dirs) do - if vim.fn.isdirectory(afterpath) == 1 then - local plugin_dir = afterpath .. "/" .. dir - if vim.fn.isdirectory(plugin_dir) == 1 then - local files = vim.fn.glob(plugin_dir .. "/*", false, true) - for _, file in ipairs(files) do - if vim.fn.filereadable(file) == 1 then - vim.cmd("source " .. file) - end - end - end - end - end - end - end - end -end - --- A nixCats specific lze handler that you can use to conditionally enable by category easier. --- at the start of your config, register with --- require('lze').register_handlers(require('nixCatsUtils.lzUtils').for_cat) --- before any calls to require('lze').load using the handler have been made. --- accepts: --- for_cat = { "your" "cat" }; for_cat = { cat = { "your" "cat" }, default = bool } --- for_cat = "your.cat"; for_cat = { cat = "your.cat", default = bool } --- where default is an alternate value for when nixCats was NOT used to install the config -M.for_cat = { - spec_field = "for_cat", - set_lazy = false, - modify = function(plugin) - if type(plugin.for_cat) == "table" then - if plugin.for_cat.cat ~= nil then - if vim.g[ [[nixCats-special-rtp-entry-nixCats]] ] ~= nil then - plugin.enabled = (nixCats(plugin.for_cat.cat) and true) or false - else - plugin.enabled = nixCats(plugin.for_cat.default) - end - else - plugin.enabled = (nixCats(plugin.for_cat) and true) or false - end - else - plugin.enabled = (nixCats(plugin.for_cat) and true) or false - end - return plugin - end, -} - -return M From b96802c7bd9e86265bfae806260b088e1803159c Mon Sep 17 00:00:00 2001 From: _cry64 Date: Sat, 14 Feb 2026 14:10:28 +1000 Subject: [PATCH 23/36] the inherit syntax is pretty btw --- homes/modules/programs/neovim/nixcats.nix | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/homes/modules/programs/neovim/nixcats.nix b/homes/modules/programs/neovim/nixcats.nix index db28c1a..ad4a32d 100644 --- a/homes/modules/programs/neovim/nixcats.nix +++ b/homes/modules/programs/neovim/nixcats.nix @@ -3,7 +3,10 @@ spkgs, ... }: let - utils = inputs.nixcats.utils; + inherit + (inputs.nixcats) + utils + ; in { imports = [ inputs.nixcats.homeModule From f123fe2af7f2c7693a358a93255bd106dec00760 Mon Sep 17 00:00:00 2001 From: _cry64 Date: Sat, 14 Feb 2026 14:10:28 +1000 Subject: [PATCH 24/36] the inherit syntax is pretty btw --- homes/modules/programs/neovim/nixcats.nix | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/homes/modules/programs/neovim/nixcats.nix b/homes/modules/programs/neovim/nixcats.nix index db28c1a..ad4a32d 100644 --- a/homes/modules/programs/neovim/nixcats.nix +++ b/homes/modules/programs/neovim/nixcats.nix @@ -3,7 +3,10 @@ spkgs, ... }: let - utils = inputs.nixcats.utils; + inherit + (inputs.nixcats) + utils + ; in { imports = [ inputs.nixcats.homeModule From bcfcf3db783c052cf28d39ff3726d0414a619991 Mon Sep 17 00:00:00 2001 From: _cry64 Date: Sat, 14 Feb 2026 18:16:29 +1000 Subject: [PATCH 25/36] update to latest cerulean patches --- flake.lock | 58 ++++++----------------- flake.nix | 9 +++- homes/modules/programs/neovim/nixcats.nix | 2 +- hosts/nixarawrui/default.nix | 11 +++-- nixpkgs.nix | 8 ++-- overlays.nix | 28 +++++------ snow.nix | 4 -- 7 files changed, 47 insertions(+), 73 deletions(-) diff --git a/flake.lock b/flake.lock index 42b3ab7..0d21e0d 100644 --- a/flake.lock +++ b/flake.lock @@ -156,17 +156,14 @@ ] }, "locked": { - "lastModified": 1770984934, - "narHash": "sha256-5+/r1CFqmmzUIqZNjrGUjGgF4BxDkQ2NUrKkCsBBE9s=", - "owner": "emilelcb", - "repo": "Cerulean", - "rev": "3ba385ee25cc02c91fe4c245a734d59c54a1b1df", - "type": "github" + "lastModified": 1771048427, + "narHash": "sha256-pGqtZ6LH3hcmtSiCy8bMnRxkBBT0CU18pIHlEm9yCs4=", + "path": "/home/me/cry/mk/Cerulean", + "type": "path" }, "original": { - "owner": "emilelcb", - "repo": "Cerulean", - "type": "github" + "path": "/home/me/cry/mk/Cerulean", + "type": "path" } }, "crane": { @@ -1257,22 +1254,6 @@ } }, "nixpkgs_10": { - "locked": { - "lastModified": 1770197578, - "narHash": "sha256-AYqlWrX09+HvGs8zM6ebZ1pwUqjkfpnv8mewYwAo+iM=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "00c21e4c93d963c50d4c0c89bfa84ed6e0694df2", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixos-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_11": { "locked": { "lastModified": 1769461804, "narHash": "sha256-msG8SU5WsBUfVVa/9RPLaymvi5bI8edTavbIq3vRlhI=", @@ -1493,7 +1474,7 @@ "nixpkgs-unstable": "nixpkgs-unstable", "sddm-silent": "sddm-silent", "spicetify-nix": "spicetify-nix", - "systems": "systems_6", + "systems": "systems_5", "zen": "zen" } }, @@ -1557,8 +1538,12 @@ }, "spicetify-nix": { "inputs": { - "nixpkgs": "nixpkgs_10", - "systems": "systems_5" + "nixpkgs": [ + "nixpkgs-unstable" + ], + "systems": [ + "systems" + ] }, "locked": { "lastModified": 1770846656, @@ -1649,21 +1634,6 @@ "type": "github" } }, - "systems_6": { - "locked": { - "lastModified": 1681028828, - "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", - "owner": "nix-systems", - "repo": "default", - "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", - "type": "github" - }, - "original": { - "owner": "nix-systems", - "repo": "default", - "type": "github" - } - }, "treefmt-nix": { "inputs": { "nixpkgs": [ @@ -1766,7 +1736,7 @@ "zen": { "inputs": { "home-manager": "home-manager_2", - "nixpkgs": "nixpkgs_11" + "nixpkgs": "nixpkgs_10" }, "locked": { "lastModified": 1770910552, diff --git a/flake.nix b/flake.nix index 09bf215..3c4eacf 100644 --- a/flake.nix +++ b/flake.nix @@ -4,7 +4,6 @@ inputs = { systems.url = "github:nix-systems/default"; - # WARNING: don't remove duplicate!! (cry64 will fix) nixpkgs-unstable.url = "github:NixOS/nixpkgs/nixos-unstable"; nixpkgs-staging.url = "github:NixOS/nixpkgs/staging-next"; @@ -44,9 +43,15 @@ awww.url = "git+https://codeberg.org/LGFae/awww"; zen.url = "github:0xc000022070/zen-browser-flake"; iamb.url = "github:ulyssa/iamb"; - spicetify-nix.url = "github:Gerg-L/spicetify-nix"; nixcord.url = "github:FlameFlag/nixcord"; millennium.url = "github:trivaris/millennium?dir=packages/nix"; + spicetify-nix = { + url = "github:Gerg-L/spicetify-nix"; + inputs = { + systems.follows = "systems"; + nixpkgs.follows = "nixpkgs-unstable"; + }; + }; # temp theme until i bother creating my own Date: Sat, 14 Feb 2026 18:16:29 +1000 Subject: [PATCH 26/36] update to latest cerulean patches --- flake.lock | 58 ++++++----------------- flake.nix | 9 +++- homes/modules/programs/neovim/nixcats.nix | 2 +- hosts/nixarawrui/default.nix | 11 +++-- nixpkgs.nix | 8 ++-- overlays.nix | 28 +++++------ snow.nix | 4 -- 7 files changed, 47 insertions(+), 73 deletions(-) diff --git a/flake.lock b/flake.lock index 42b3ab7..0d21e0d 100644 --- a/flake.lock +++ b/flake.lock @@ -156,17 +156,14 @@ ] }, "locked": { - "lastModified": 1770984934, - "narHash": "sha256-5+/r1CFqmmzUIqZNjrGUjGgF4BxDkQ2NUrKkCsBBE9s=", - "owner": "emilelcb", - "repo": "Cerulean", - "rev": "3ba385ee25cc02c91fe4c245a734d59c54a1b1df", - "type": "github" + "lastModified": 1771048427, + "narHash": "sha256-pGqtZ6LH3hcmtSiCy8bMnRxkBBT0CU18pIHlEm9yCs4=", + "path": "/home/me/cry/mk/Cerulean", + "type": "path" }, "original": { - "owner": "emilelcb", - "repo": "Cerulean", - "type": "github" + "path": "/home/me/cry/mk/Cerulean", + "type": "path" } }, "crane": { @@ -1257,22 +1254,6 @@ } }, "nixpkgs_10": { - "locked": { - "lastModified": 1770197578, - "narHash": "sha256-AYqlWrX09+HvGs8zM6ebZ1pwUqjkfpnv8mewYwAo+iM=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "00c21e4c93d963c50d4c0c89bfa84ed6e0694df2", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixos-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_11": { "locked": { "lastModified": 1769461804, "narHash": "sha256-msG8SU5WsBUfVVa/9RPLaymvi5bI8edTavbIq3vRlhI=", @@ -1493,7 +1474,7 @@ "nixpkgs-unstable": "nixpkgs-unstable", "sddm-silent": "sddm-silent", "spicetify-nix": "spicetify-nix", - "systems": "systems_6", + "systems": "systems_5", "zen": "zen" } }, @@ -1557,8 +1538,12 @@ }, "spicetify-nix": { "inputs": { - "nixpkgs": "nixpkgs_10", - "systems": "systems_5" + "nixpkgs": [ + "nixpkgs-unstable" + ], + "systems": [ + "systems" + ] }, "locked": { "lastModified": 1770846656, @@ -1649,21 +1634,6 @@ "type": "github" } }, - "systems_6": { - "locked": { - "lastModified": 1681028828, - "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", - "owner": "nix-systems", - "repo": "default", - "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", - "type": "github" - }, - "original": { - "owner": "nix-systems", - "repo": "default", - "type": "github" - } - }, "treefmt-nix": { "inputs": { "nixpkgs": [ @@ -1766,7 +1736,7 @@ "zen": { "inputs": { "home-manager": "home-manager_2", - "nixpkgs": "nixpkgs_11" + "nixpkgs": "nixpkgs_10" }, "locked": { "lastModified": 1770910552, diff --git a/flake.nix b/flake.nix index 09bf215..3c4eacf 100644 --- a/flake.nix +++ b/flake.nix @@ -4,7 +4,6 @@ inputs = { systems.url = "github:nix-systems/default"; - # WARNING: don't remove duplicate!! (cry64 will fix) nixpkgs-unstable.url = "github:NixOS/nixpkgs/nixos-unstable"; nixpkgs-staging.url = "github:NixOS/nixpkgs/staging-next"; @@ -44,9 +43,15 @@ awww.url = "git+https://codeberg.org/LGFae/awww"; zen.url = "github:0xc000022070/zen-browser-flake"; iamb.url = "github:ulyssa/iamb"; - spicetify-nix.url = "github:Gerg-L/spicetify-nix"; nixcord.url = "github:FlameFlag/nixcord"; millennium.url = "github:trivaris/millennium?dir=packages/nix"; + spicetify-nix = { + url = "github:Gerg-L/spicetify-nix"; + inputs = { + systems.follows = "systems"; + nixpkgs.follows = "nixpkgs-unstable"; + }; + }; # temp theme until i bother creating my own Date: Sat, 14 Feb 2026 20:09:02 +0000 Subject: [PATCH 27/36] finally added nix lsp and changed indentation for nix and lua :3 also added haskell bc dea <3 --- flake.lock | 15 +++++++++------ .../programs/neovim/lua/lsp/indentation.lua | 17 +++++++++++++++++ homes/modules/programs/neovim/lua/lsp/init.lua | 1 + homes/modules/programs/neovim/lua/lsp/lsp.lua | 8 ++++++++ homes/modules/programs/neovim/nixcats.nix | 5 +++++ 5 files changed, 40 insertions(+), 6 deletions(-) create mode 100644 homes/modules/programs/neovim/lua/lsp/indentation.lua diff --git a/flake.lock b/flake.lock index 0d21e0d..b086454 100644 --- a/flake.lock +++ b/flake.lock @@ -156,14 +156,17 @@ ] }, "locked": { - "lastModified": 1771048427, - "narHash": "sha256-pGqtZ6LH3hcmtSiCy8bMnRxkBBT0CU18pIHlEm9yCs4=", - "path": "/home/me/cry/mk/Cerulean", - "type": "path" + "lastModified": 1771048834, + "narHash": "sha256-rkhrNJIjCQeABf0zgWZvz4Rb99TJvK+ioOmgy3tIOMs=", + "owner": "emilelcb", + "repo": "Cerulean", + "rev": "f329d48223d8addd340f14c9c653960544b3ce2c", + "type": "github" }, "original": { - "path": "/home/me/cry/mk/Cerulean", - "type": "path" + "owner": "emilelcb", + "repo": "Cerulean", + "type": "github" } }, "crane": { diff --git a/homes/modules/programs/neovim/lua/lsp/indentation.lua b/homes/modules/programs/neovim/lua/lsp/indentation.lua new file mode 100644 index 0000000..df7c2a8 --- /dev/null +++ b/homes/modules/programs/neovim/lua/lsp/indentation.lua @@ -0,0 +1,17 @@ +vim.api.nvim_create_autocmd("FileType", { + pattern = "lua", + callback = function() + vim.opt_local.shiftwidth = 2 + vim.opt_local.tabstop = 2 + vim.opt_local.expandtab = true + end, +}) + +vim.api.nvim_create_autocmd("FileType", { + pattern = "nix", + callback = function() + vim.opt_local.shiftwidth = 2 + vim.opt_local.tabstop = 2 + vim.opt_local.expandtab = true + end, +}) diff --git a/homes/modules/programs/neovim/lua/lsp/init.lua b/homes/modules/programs/neovim/lua/lsp/init.lua index 1fae8a8..647d24f 100644 --- a/homes/modules/programs/neovim/lua/lsp/init.lua +++ b/homes/modules/programs/neovim/lua/lsp/init.lua @@ -2,4 +2,5 @@ require("lze").load { { import = "lsp.completion", }, } +require("lsp.indentation") require("lsp.lsp") diff --git a/homes/modules/programs/neovim/lua/lsp/lsp.lua b/homes/modules/programs/neovim/lua/lsp/lsp.lua index 496de69..18e3c80 100644 --- a/homes/modules/programs/neovim/lua/lsp/lsp.lua +++ b/homes/modules/programs/neovim/lua/lsp/lsp.lua @@ -21,6 +21,10 @@ servers.lua_ls = { }, } +servers.nil_ls = { + settings = {}, +} + local rust_analyzer_cmd = os.getenv("RUST_ANALYZER_CMD") servers.rust_analyzer = { cmd = { rust_analyzer_cmd }, @@ -55,6 +59,10 @@ servers.gleam = { settings = {}, } +servers.hls = { + settings = {}, +} + local java_home = os.getenv("JAVA_HOME") servers.jdtls = { settings = { diff --git a/homes/modules/programs/neovim/nixcats.nix b/homes/modules/programs/neovim/nixcats.nix index 3fbfec7..e81a8a0 100644 --- a/homes/modules/programs/neovim/nixcats.nix +++ b/homes/modules/programs/neovim/nixcats.nix @@ -75,6 +75,10 @@ in { gleam = with pkgs; [ gleam ]; + haskell = with pkgs; [ + haskell-language-server + ormolu + ]; java = with pkgs; [ jdt-language-server javaPackages.compiler.openjdk17 @@ -218,6 +222,7 @@ in { zig = true; elixir = true; gleam = true; + haskell = true; java = true; }; }; From 0f90979ef513ca2a4933fd596a182050362940e7 Mon Sep 17 00:00:00 2001 From: foxora Date: Sat, 14 Feb 2026 20:09:02 +0000 Subject: [PATCH 28/36] finally added nix lsp and changed indentation for nix and lua :3 also added haskell bc dea <3 --- flake.lock | 15 +++++++++------ .../programs/neovim/lua/lsp/indentation.lua | 17 +++++++++++++++++ homes/modules/programs/neovim/lua/lsp/init.lua | 1 + homes/modules/programs/neovim/lua/lsp/lsp.lua | 8 ++++++++ homes/modules/programs/neovim/nixcats.nix | 5 +++++ 5 files changed, 40 insertions(+), 6 deletions(-) create mode 100644 homes/modules/programs/neovim/lua/lsp/indentation.lua diff --git a/flake.lock b/flake.lock index 0d21e0d..b086454 100644 --- a/flake.lock +++ b/flake.lock @@ -156,14 +156,17 @@ ] }, "locked": { - "lastModified": 1771048427, - "narHash": "sha256-pGqtZ6LH3hcmtSiCy8bMnRxkBBT0CU18pIHlEm9yCs4=", - "path": "/home/me/cry/mk/Cerulean", - "type": "path" + "lastModified": 1771048834, + "narHash": "sha256-rkhrNJIjCQeABf0zgWZvz4Rb99TJvK+ioOmgy3tIOMs=", + "owner": "emilelcb", + "repo": "Cerulean", + "rev": "f329d48223d8addd340f14c9c653960544b3ce2c", + "type": "github" }, "original": { - "path": "/home/me/cry/mk/Cerulean", - "type": "path" + "owner": "emilelcb", + "repo": "Cerulean", + "type": "github" } }, "crane": { diff --git a/homes/modules/programs/neovim/lua/lsp/indentation.lua b/homes/modules/programs/neovim/lua/lsp/indentation.lua new file mode 100644 index 0000000..df7c2a8 --- /dev/null +++ b/homes/modules/programs/neovim/lua/lsp/indentation.lua @@ -0,0 +1,17 @@ +vim.api.nvim_create_autocmd("FileType", { + pattern = "lua", + callback = function() + vim.opt_local.shiftwidth = 2 + vim.opt_local.tabstop = 2 + vim.opt_local.expandtab = true + end, +}) + +vim.api.nvim_create_autocmd("FileType", { + pattern = "nix", + callback = function() + vim.opt_local.shiftwidth = 2 + vim.opt_local.tabstop = 2 + vim.opt_local.expandtab = true + end, +}) diff --git a/homes/modules/programs/neovim/lua/lsp/init.lua b/homes/modules/programs/neovim/lua/lsp/init.lua index 1fae8a8..647d24f 100644 --- a/homes/modules/programs/neovim/lua/lsp/init.lua +++ b/homes/modules/programs/neovim/lua/lsp/init.lua @@ -2,4 +2,5 @@ require("lze").load { { import = "lsp.completion", }, } +require("lsp.indentation") require("lsp.lsp") diff --git a/homes/modules/programs/neovim/lua/lsp/lsp.lua b/homes/modules/programs/neovim/lua/lsp/lsp.lua index 496de69..18e3c80 100644 --- a/homes/modules/programs/neovim/lua/lsp/lsp.lua +++ b/homes/modules/programs/neovim/lua/lsp/lsp.lua @@ -21,6 +21,10 @@ servers.lua_ls = { }, } +servers.nil_ls = { + settings = {}, +} + local rust_analyzer_cmd = os.getenv("RUST_ANALYZER_CMD") servers.rust_analyzer = { cmd = { rust_analyzer_cmd }, @@ -55,6 +59,10 @@ servers.gleam = { settings = {}, } +servers.hls = { + settings = {}, +} + local java_home = os.getenv("JAVA_HOME") servers.jdtls = { settings = { diff --git a/homes/modules/programs/neovim/nixcats.nix b/homes/modules/programs/neovim/nixcats.nix index 3fbfec7..e81a8a0 100644 --- a/homes/modules/programs/neovim/nixcats.nix +++ b/homes/modules/programs/neovim/nixcats.nix @@ -75,6 +75,10 @@ in { gleam = with pkgs; [ gleam ]; + haskell = with pkgs; [ + haskell-language-server + ormolu + ]; java = with pkgs; [ jdt-language-server javaPackages.compiler.openjdk17 @@ -218,6 +222,7 @@ in { zig = true; elixir = true; gleam = true; + haskell = true; java = true; }; }; From 1ffaf0fb2bb569e9362c6619cb22a228aaa5d251 Mon Sep 17 00:00:00 2001 From: foxora Date: Sun, 15 Feb 2026 08:37:27 +0000 Subject: [PATCH 29/36] omg thank u butterfly for helping me get arcturus added to my config :3 --- hosts/arcturus/default.nix | 126 ++++++++++++++++++++++ hosts/arcturus/hardware-configuration.nix | 33 ++++++ snow.nix | 9 ++ 3 files changed, 168 insertions(+) create mode 100644 hosts/arcturus/default.nix create mode 100644 hosts/arcturus/hardware-configuration.nix diff --git a/hosts/arcturus/default.nix b/hosts/arcturus/default.nix new file mode 100644 index 0000000..44be041 --- /dev/null +++ b/hosts/arcturus/default.nix @@ -0,0 +1,126 @@ +{ config, lib, pkgs, ... }: +{ + imports = [ + ./hardware-configuration.nix + ]; + + networking.hostName = "arcturus"; + + # Enable the Flakes feature and the accompaying new nix command-line tool + nix.settings = { + experimental-features = ["nix-command" "flakes"]; + download-buffer-size = 524288000; + trusted-users = ["root" "@wheel"]; + }; + + boot.loader.systemd-boot.enable = true; + boot.loader.efi.canTouchEfiVariables = true; + + networking = { + useNetworkd = false; + useDHCP = false; + + nftables.enable = true; + + firewall = { + allowedTCPPorts = [ + 2222 + ]; + }; + }; + + systemd.network = { + enable = true; + + netdevs = { + "10-bond0" = { + netdevConfig = { + Kind = "bond"; + Name = "bond0"; + }; + bondConfig = { + Mode = "802.3ad"; + TransmitHashPolicy = "layer3+4"; + LACPTransmitRate = "fast"; + MIIMonitorSec = "100ms"; + }; + }; + }; + + networks = { + "30-eno1" = { + matchConfig.Name = "eno1"; + networkConfig.Bond = "bond0"; + }; + "30-eno2" = { + matchConfig.Name = "eno2"; + networkConfig.Bond = "bond0"; + }; + "40-bond0" = { + matchConfig.Name = "bond0"; + linkConfig = { + RequiredForOnline = "carrier"; + }; + networkConfig.LinkLocalAddressing = "no"; + networkConfig.DHCP = "yes"; + vlan = [ "vlan1" ]; + }; + }; + }; + + time.timeZone = "Europe/London"; + + i18n.defaultLocale = "en_US.UTF-8"; + console = { + font = "Lat2-Terminus16"; + keyMap = "us"; + }; + + users.users.foxora = { + isNormalUser = true; + extraGroups = [ "wheel" ]; + + packages = with pkgs; [ + tree + ]; + + openssh.authorizedKeys.keys = [ + "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIE7NLaT/J1S/lwFp0YRHN5oTGhFoDYd2yaRKKsBVpqIv aurora@nixarawrui" + ]; + }; + + environment.systemPackages = with pkgs; [ + git + neovim + wget + ]; + + services = { + openssh = { + enable = true; + + ports = [2222]; + settings = { + PasswordAuthentication = false; + PermitRootLogin = "no"; + AllowUsers = ["foxora"]; + UseDns = false; # enables rDNS lookup + X11Forwarding = false; + }; + }; + }; + + security = { + sudo = { + enable = true; + wheelNeedsPassword = true; + }; + + pam = { + sshAgentAuth.enable = true; + services.sudo.sshAgentAuth = true; # pam_ssh_agent_auth module + }; + }; + + system.stateVersion = "25.11"; +} diff --git a/hosts/arcturus/hardware-configuration.nix b/hosts/arcturus/hardware-configuration.nix new file mode 100644 index 0000000..2cb46e2 --- /dev/null +++ b/hosts/arcturus/hardware-configuration.nix @@ -0,0 +1,33 @@ +# 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 = [ "ahci" "ehci_pci" "megaraid_sas" "usb_storage" "usbhid" "sd_mod" "sr_mod" ]; + boot.initrd.kernelModules = [ ]; + boot.kernelModules = [ "kvm-intel" ]; + boot.extraModulePackages = [ ]; + + fileSystems."/" = + { device = "/dev/disk/by-uuid/7f22e35f-7536-49c4-9c04-88874e87f266"; + fsType = "btrfs"; + }; + + fileSystems."/boot" = + { device = "/dev/disk/by-uuid/0213-F9A0"; + fsType = "vfat"; + options = [ "fmask=0077" "dmask=0077" ]; + }; + + swapDevices = + [ { device = "/dev/disk/by-uuid/0d04172b-aed8-42ea-9cb8-e5dcbf960200"; } + ]; + + nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux"; + hardware.cpu.intel.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware; +} diff --git a/snow.nix b/snow.nix index f434d30..8b9dcad 100644 --- a/snow.nix +++ b/snow.nix @@ -14,6 +14,15 @@ cerulean.mkNexus ./. (self: { sddm-silent.nixosModules.default ]; }; + + arcturus = { + system = "x86_64-linux"; + deploy.ssh = { + host = "10.16.1.163"; + port = 2222; + user = "foxora"; + }; + }; }; }; }) From ddf427aef4327ca8f0920816ae43586db8b00a7e Mon Sep 17 00:00:00 2001 From: foxora Date: Sun, 15 Feb 2026 08:37:27 +0000 Subject: [PATCH 30/36] omg thank u butterfly for helping me get arcturus added to my config :3 --- hosts/arcturus/default.nix | 126 ++++++++++++++++++++++ hosts/arcturus/hardware-configuration.nix | 33 ++++++ snow.nix | 9 ++ 3 files changed, 168 insertions(+) create mode 100644 hosts/arcturus/default.nix create mode 100644 hosts/arcturus/hardware-configuration.nix diff --git a/hosts/arcturus/default.nix b/hosts/arcturus/default.nix new file mode 100644 index 0000000..44be041 --- /dev/null +++ b/hosts/arcturus/default.nix @@ -0,0 +1,126 @@ +{ config, lib, pkgs, ... }: +{ + imports = [ + ./hardware-configuration.nix + ]; + + networking.hostName = "arcturus"; + + # Enable the Flakes feature and the accompaying new nix command-line tool + nix.settings = { + experimental-features = ["nix-command" "flakes"]; + download-buffer-size = 524288000; + trusted-users = ["root" "@wheel"]; + }; + + boot.loader.systemd-boot.enable = true; + boot.loader.efi.canTouchEfiVariables = true; + + networking = { + useNetworkd = false; + useDHCP = false; + + nftables.enable = true; + + firewall = { + allowedTCPPorts = [ + 2222 + ]; + }; + }; + + systemd.network = { + enable = true; + + netdevs = { + "10-bond0" = { + netdevConfig = { + Kind = "bond"; + Name = "bond0"; + }; + bondConfig = { + Mode = "802.3ad"; + TransmitHashPolicy = "layer3+4"; + LACPTransmitRate = "fast"; + MIIMonitorSec = "100ms"; + }; + }; + }; + + networks = { + "30-eno1" = { + matchConfig.Name = "eno1"; + networkConfig.Bond = "bond0"; + }; + "30-eno2" = { + matchConfig.Name = "eno2"; + networkConfig.Bond = "bond0"; + }; + "40-bond0" = { + matchConfig.Name = "bond0"; + linkConfig = { + RequiredForOnline = "carrier"; + }; + networkConfig.LinkLocalAddressing = "no"; + networkConfig.DHCP = "yes"; + vlan = [ "vlan1" ]; + }; + }; + }; + + time.timeZone = "Europe/London"; + + i18n.defaultLocale = "en_US.UTF-8"; + console = { + font = "Lat2-Terminus16"; + keyMap = "us"; + }; + + users.users.foxora = { + isNormalUser = true; + extraGroups = [ "wheel" ]; + + packages = with pkgs; [ + tree + ]; + + openssh.authorizedKeys.keys = [ + "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIE7NLaT/J1S/lwFp0YRHN5oTGhFoDYd2yaRKKsBVpqIv aurora@nixarawrui" + ]; + }; + + environment.systemPackages = with pkgs; [ + git + neovim + wget + ]; + + services = { + openssh = { + enable = true; + + ports = [2222]; + settings = { + PasswordAuthentication = false; + PermitRootLogin = "no"; + AllowUsers = ["foxora"]; + UseDns = false; # enables rDNS lookup + X11Forwarding = false; + }; + }; + }; + + security = { + sudo = { + enable = true; + wheelNeedsPassword = true; + }; + + pam = { + sshAgentAuth.enable = true; + services.sudo.sshAgentAuth = true; # pam_ssh_agent_auth module + }; + }; + + system.stateVersion = "25.11"; +} diff --git a/hosts/arcturus/hardware-configuration.nix b/hosts/arcturus/hardware-configuration.nix new file mode 100644 index 0000000..2cb46e2 --- /dev/null +++ b/hosts/arcturus/hardware-configuration.nix @@ -0,0 +1,33 @@ +# 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 = [ "ahci" "ehci_pci" "megaraid_sas" "usb_storage" "usbhid" "sd_mod" "sr_mod" ]; + boot.initrd.kernelModules = [ ]; + boot.kernelModules = [ "kvm-intel" ]; + boot.extraModulePackages = [ ]; + + fileSystems."/" = + { device = "/dev/disk/by-uuid/7f22e35f-7536-49c4-9c04-88874e87f266"; + fsType = "btrfs"; + }; + + fileSystems."/boot" = + { device = "/dev/disk/by-uuid/0213-F9A0"; + fsType = "vfat"; + options = [ "fmask=0077" "dmask=0077" ]; + }; + + swapDevices = + [ { device = "/dev/disk/by-uuid/0d04172b-aed8-42ea-9cb8-e5dcbf960200"; } + ]; + + nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux"; + hardware.cpu.intel.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware; +} diff --git a/snow.nix b/snow.nix index f434d30..8b9dcad 100644 --- a/snow.nix +++ b/snow.nix @@ -14,6 +14,15 @@ cerulean.mkNexus ./. (self: { sddm-silent.nixosModules.default ]; }; + + arcturus = { + system = "x86_64-linux"; + deploy.ssh = { + host = "10.16.1.163"; + port = 2222; + user = "foxora"; + }; + }; }; }; }) From cdbf082314fd03cbb1730707adcb9cc4f3c0f1d3 Mon Sep 17 00:00:00 2001 From: foxora Date: Sun, 15 Feb 2026 09:15:10 +0000 Subject: [PATCH 31/36] i forgot why i enabled pulseaudio as well as pipewire --- hosts/nixarawrui/default.nix | 1 - 1 file changed, 1 deletion(-) diff --git a/hosts/nixarawrui/default.nix b/hosts/nixarawrui/default.nix index 88c362c..ba6d75a 100644 --- a/hosts/nixarawrui/default.nix +++ b/hosts/nixarawrui/default.nix @@ -155,7 +155,6 @@ alsa.enable = true; alsa.support32Bit = true; - pulse.enable = true; }; udev = { From 62b8d28c8a2f6f3e44ea979d37e659946c29d6a2 Mon Sep 17 00:00:00 2001 From: foxora Date: Sun, 15 Feb 2026 09:15:10 +0000 Subject: [PATCH 32/36] i forgot why i enabled pulseaudio as well as pipewire --- hosts/nixarawrui/default.nix | 1 - 1 file changed, 1 deletion(-) diff --git a/hosts/nixarawrui/default.nix b/hosts/nixarawrui/default.nix index 88c362c..ba6d75a 100644 --- a/hosts/nixarawrui/default.nix +++ b/hosts/nixarawrui/default.nix @@ -155,7 +155,6 @@ alsa.enable = true; alsa.support32Bit = true; - pulse.enable = true; }; udev = { From 8b8c9cf585ed4292077f26f73bcd476381009165 Mon Sep 17 00:00:00 2001 From: foxora Date: Sun, 15 Feb 2026 10:42:00 +0000 Subject: [PATCH 33/36] added lyra + moved stuff around :3 --- hosts/arcturus/default.nix | 115 ++++++++++++++------------ hosts/lyra/default.nix | 112 +++++++++++++++++++++++++ hosts/lyra/hardware-configuration.nix | 33 ++++++++ snow.nix | 9 ++ 4 files changed, 216 insertions(+), 53 deletions(-) create mode 100644 hosts/lyra/default.nix create mode 100644 hosts/lyra/hardware-configuration.nix diff --git a/hosts/arcturus/default.nix b/hosts/arcturus/default.nix index 44be041..cdbc104 100644 --- a/hosts/arcturus/default.nix +++ b/hosts/arcturus/default.nix @@ -6,15 +6,38 @@ networking.hostName = "arcturus"; - # Enable the Flakes feature and the accompaying new nix command-line tool nix.settings = { experimental-features = ["nix-command" "flakes"]; download-buffer-size = 524288000; trusted-users = ["root" "@wheel"]; }; - boot.loader.systemd-boot.enable = true; - boot.loader.efi.canTouchEfiVariables = true; + time.timeZone = "Europe/London"; + i18n.defaultLocale = "en_US.UTF-8"; + console = { + font = "Lat2-Terminus16"; + keyMap = "us"; + }; + + boot = { + kernelPackages = pkgs.linuxPackages_latest; + loader = { + systemd-boot.enable = true; + efi.canTouchEfiVariables = true; + }; + }; + + security = { + sudo = { + enable = true; + wheelNeedsPassword = true; + }; + + pam = { + sshAgentAuth.enable = true; + services.sudo.sshAgentAuth = true; # pam_ssh_agent_auth module + }; + }; networking = { useNetworkd = false; @@ -35,15 +58,15 @@ netdevs = { "10-bond0" = { netdevConfig = { - Kind = "bond"; - Name = "bond0"; - }; - bondConfig = { - Mode = "802.3ad"; - TransmitHashPolicy = "layer3+4"; - LACPTransmitRate = "fast"; - MIIMonitorSec = "100ms"; - }; + Kind = "bond"; + Name = "bond0"; + }; + bondConfig = { + Mode = "802.3ad"; + TransmitHashPolicy = "layer3+4"; + LACPTransmitRate = "fast"; + MIIMonitorSec = "100ms"; + }; }; }; @@ -58,43 +81,16 @@ }; "40-bond0" = { matchConfig.Name = "bond0"; - linkConfig = { - RequiredForOnline = "carrier"; - }; - networkConfig.LinkLocalAddressing = "no"; - networkConfig.DHCP = "yes"; - vlan = [ "vlan1" ]; + linkConfig = { + RequiredForOnline = "carrier"; + }; + networkConfig.LinkLocalAddressing = "no"; + networkConfig.DHCP = "yes"; + vlan = [ "vlan1" ]; }; }; }; - time.timeZone = "Europe/London"; - - i18n.defaultLocale = "en_US.UTF-8"; - console = { - font = "Lat2-Terminus16"; - keyMap = "us"; - }; - - users.users.foxora = { - isNormalUser = true; - extraGroups = [ "wheel" ]; - - packages = with pkgs; [ - tree - ]; - - openssh.authorizedKeys.keys = [ - "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIE7NLaT/J1S/lwFp0YRHN5oTGhFoDYd2yaRKKsBVpqIv aurora@nixarawrui" - ]; - }; - - environment.systemPackages = with pkgs; [ - git - neovim - wget - ]; - services = { openssh = { enable = true; @@ -110,15 +106,28 @@ }; }; - security = { - sudo = { - enable = true; - wheelNeedsPassword = true; - }; + users.users.foxora = { + isNormalUser = true; + extraGroups = [ "wheel" ]; - pam = { - sshAgentAuth.enable = true; - services.sudo.sshAgentAuth = true; # pam_ssh_agent_auth module + packages = with pkgs; [ + tree + ]; + + openssh.authorizedKeys.keys = [ + "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIE7NLaT/J1S/lwFp0YRHN5oTGhFoDYd2yaRKKsBVpqIv aurora@nixarawrui" + ]; + }; + + environment = { + systemPackages = with pkgs; [ + neovim + git + wget + ]; + + variables = { + EDITOR = "nvim"; }; }; diff --git a/hosts/lyra/default.nix b/hosts/lyra/default.nix new file mode 100644 index 0000000..6f90f17 --- /dev/null +++ b/hosts/lyra/default.nix @@ -0,0 +1,112 @@ +{ config, lib, pkgs, ... }: +{ + imports = [ + ./hardware-configuration.nix + ]; + + networking.hostName = "lyra"; + + nix.settings = { + experimental-features = ["nix-command" "flakes"]; + download-buffer-size = 524288000; + trusted-users = ["root" "@wheel"]; + }; + + time.timeZone = "Europe/London"; + i18n.defaultLocale = "en_US.UTF-8"; + console = { + font = "Lat2-Terminus16"; + keyMap = "us"; + }; + + boot = { + kernelPackages = pkgs.linuxPackages_latest; + loader = { + systemd-boot.enable = true; + efi.canTouchEfiVariables = true; + }; + }; + + security = { + sudo = { + enable = true; + wheelNeedsPassword = true; + }; + + pam = { + sshAgentAuth.enable = true; + services.sudo.sshAgentAuth = true; # pam_ssh_agent_auth module + }; + }; + + networking = { + networkmanager.enable = true; + + firewall = { + allowedTCPPorts = [ + 2222 + ]; + }; + }; + + services = { + openssh = { + enable = true; + + ports = [2222]; + settings = { + PasswordAuthentication = false; + PermitRootLogin = "no"; + AllowUsers = ["foxora"]; + UseDns = false; # enables rDNS lookup + X11Forwarding = false; + }; + }; + }; + + virtualisation.containers.enable = true; + virtualisation = { + podman = { + enable = true; + dockerCompat = true; + defaultNetwork.settings.dns_enabled = true; + }; + }; + + users.users.foxora = { + isNormalUser = true; + extraGroups = [ "wheel" ]; + + packages = with pkgs; [ + tree + ]; + + openssh.authorizedKeys.keys = [ + "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAID4d6Pt4fFTP0/ZfesNL+MX+j/OqoMRBOh61gqHNWpnH aurora@nixarawrui" + ]; + }; + + programs = { + nh = { + enable = true; + clean.enable = true; + clean.extraArgs = "--keep-since 14d --keep 8"; + flake = "/etc/nixos"; + }; + }; + + environment = { + systemPackages = with pkgs; [ + neovim + git + wget + ]; + + variables = { + EDITOR = "nvim"; + }; + }; + + system.stateVersion = "25.11"; +} + diff --git a/hosts/lyra/hardware-configuration.nix b/hosts/lyra/hardware-configuration.nix new file mode 100644 index 0000000..6dbf2fa --- /dev/null +++ b/hosts/lyra/hardware-configuration.nix @@ -0,0 +1,33 @@ +# 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 = [ "ahci" "xhci_pci" "megaraid_sas" "usb_storage" "usbhid" "sd_mod" ]; + boot.initrd.kernelModules = [ ]; + boot.kernelModules = [ "kvm-intel" ]; + boot.extraModulePackages = [ ]; + + fileSystems."/" = + { device = "/dev/disk/by-uuid/1bc53888-6db8-46df-aa28-975b710c5de8"; + fsType = "ext4"; + }; + + fileSystems."/boot" = + { device = "/dev/disk/by-uuid/12CE-A600"; + fsType = "vfat"; + options = [ "fmask=0077" "dmask=0077" ]; + }; + + swapDevices = + [ { device = "/dev/disk/by-uuid/60643004-6916-46b3-8655-66fdc28cf5ad"; } + ]; + + nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux"; + hardware.cpu.intel.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware; +} diff --git a/snow.nix b/snow.nix index 8b9dcad..932b744 100644 --- a/snow.nix +++ b/snow.nix @@ -23,6 +23,15 @@ cerulean.mkNexus ./. (self: { user = "foxora"; }; }; + + lyra = { + system = "x86_64-linux"; + deploy.ssh = { + host = "10.16.1.58"; + port = 2222; + user = "foxora"; + }; + }; }; }; }) From 2db81681ee9b43fabe34cc9f9187749067bb3d15 Mon Sep 17 00:00:00 2001 From: foxora Date: Sun, 15 Feb 2026 10:42:00 +0000 Subject: [PATCH 34/36] added lyra + moved stuff around :3 --- hosts/arcturus/default.nix | 115 ++++++++++++++------------ hosts/lyra/default.nix | 112 +++++++++++++++++++++++++ hosts/lyra/hardware-configuration.nix | 33 ++++++++ snow.nix | 9 ++ 4 files changed, 216 insertions(+), 53 deletions(-) create mode 100644 hosts/lyra/default.nix create mode 100644 hosts/lyra/hardware-configuration.nix diff --git a/hosts/arcturus/default.nix b/hosts/arcturus/default.nix index 44be041..cdbc104 100644 --- a/hosts/arcturus/default.nix +++ b/hosts/arcturus/default.nix @@ -6,15 +6,38 @@ networking.hostName = "arcturus"; - # Enable the Flakes feature and the accompaying new nix command-line tool nix.settings = { experimental-features = ["nix-command" "flakes"]; download-buffer-size = 524288000; trusted-users = ["root" "@wheel"]; }; - boot.loader.systemd-boot.enable = true; - boot.loader.efi.canTouchEfiVariables = true; + time.timeZone = "Europe/London"; + i18n.defaultLocale = "en_US.UTF-8"; + console = { + font = "Lat2-Terminus16"; + keyMap = "us"; + }; + + boot = { + kernelPackages = pkgs.linuxPackages_latest; + loader = { + systemd-boot.enable = true; + efi.canTouchEfiVariables = true; + }; + }; + + security = { + sudo = { + enable = true; + wheelNeedsPassword = true; + }; + + pam = { + sshAgentAuth.enable = true; + services.sudo.sshAgentAuth = true; # pam_ssh_agent_auth module + }; + }; networking = { useNetworkd = false; @@ -35,15 +58,15 @@ netdevs = { "10-bond0" = { netdevConfig = { - Kind = "bond"; - Name = "bond0"; - }; - bondConfig = { - Mode = "802.3ad"; - TransmitHashPolicy = "layer3+4"; - LACPTransmitRate = "fast"; - MIIMonitorSec = "100ms"; - }; + Kind = "bond"; + Name = "bond0"; + }; + bondConfig = { + Mode = "802.3ad"; + TransmitHashPolicy = "layer3+4"; + LACPTransmitRate = "fast"; + MIIMonitorSec = "100ms"; + }; }; }; @@ -58,43 +81,16 @@ }; "40-bond0" = { matchConfig.Name = "bond0"; - linkConfig = { - RequiredForOnline = "carrier"; - }; - networkConfig.LinkLocalAddressing = "no"; - networkConfig.DHCP = "yes"; - vlan = [ "vlan1" ]; + linkConfig = { + RequiredForOnline = "carrier"; + }; + networkConfig.LinkLocalAddressing = "no"; + networkConfig.DHCP = "yes"; + vlan = [ "vlan1" ]; }; }; }; - time.timeZone = "Europe/London"; - - i18n.defaultLocale = "en_US.UTF-8"; - console = { - font = "Lat2-Terminus16"; - keyMap = "us"; - }; - - users.users.foxora = { - isNormalUser = true; - extraGroups = [ "wheel" ]; - - packages = with pkgs; [ - tree - ]; - - openssh.authorizedKeys.keys = [ - "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIE7NLaT/J1S/lwFp0YRHN5oTGhFoDYd2yaRKKsBVpqIv aurora@nixarawrui" - ]; - }; - - environment.systemPackages = with pkgs; [ - git - neovim - wget - ]; - services = { openssh = { enable = true; @@ -110,15 +106,28 @@ }; }; - security = { - sudo = { - enable = true; - wheelNeedsPassword = true; - }; + users.users.foxora = { + isNormalUser = true; + extraGroups = [ "wheel" ]; - pam = { - sshAgentAuth.enable = true; - services.sudo.sshAgentAuth = true; # pam_ssh_agent_auth module + packages = with pkgs; [ + tree + ]; + + openssh.authorizedKeys.keys = [ + "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIE7NLaT/J1S/lwFp0YRHN5oTGhFoDYd2yaRKKsBVpqIv aurora@nixarawrui" + ]; + }; + + environment = { + systemPackages = with pkgs; [ + neovim + git + wget + ]; + + variables = { + EDITOR = "nvim"; }; }; diff --git a/hosts/lyra/default.nix b/hosts/lyra/default.nix new file mode 100644 index 0000000..6f90f17 --- /dev/null +++ b/hosts/lyra/default.nix @@ -0,0 +1,112 @@ +{ config, lib, pkgs, ... }: +{ + imports = [ + ./hardware-configuration.nix + ]; + + networking.hostName = "lyra"; + + nix.settings = { + experimental-features = ["nix-command" "flakes"]; + download-buffer-size = 524288000; + trusted-users = ["root" "@wheel"]; + }; + + time.timeZone = "Europe/London"; + i18n.defaultLocale = "en_US.UTF-8"; + console = { + font = "Lat2-Terminus16"; + keyMap = "us"; + }; + + boot = { + kernelPackages = pkgs.linuxPackages_latest; + loader = { + systemd-boot.enable = true; + efi.canTouchEfiVariables = true; + }; + }; + + security = { + sudo = { + enable = true; + wheelNeedsPassword = true; + }; + + pam = { + sshAgentAuth.enable = true; + services.sudo.sshAgentAuth = true; # pam_ssh_agent_auth module + }; + }; + + networking = { + networkmanager.enable = true; + + firewall = { + allowedTCPPorts = [ + 2222 + ]; + }; + }; + + services = { + openssh = { + enable = true; + + ports = [2222]; + settings = { + PasswordAuthentication = false; + PermitRootLogin = "no"; + AllowUsers = ["foxora"]; + UseDns = false; # enables rDNS lookup + X11Forwarding = false; + }; + }; + }; + + virtualisation.containers.enable = true; + virtualisation = { + podman = { + enable = true; + dockerCompat = true; + defaultNetwork.settings.dns_enabled = true; + }; + }; + + users.users.foxora = { + isNormalUser = true; + extraGroups = [ "wheel" ]; + + packages = with pkgs; [ + tree + ]; + + openssh.authorizedKeys.keys = [ + "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAID4d6Pt4fFTP0/ZfesNL+MX+j/OqoMRBOh61gqHNWpnH aurora@nixarawrui" + ]; + }; + + programs = { + nh = { + enable = true; + clean.enable = true; + clean.extraArgs = "--keep-since 14d --keep 8"; + flake = "/etc/nixos"; + }; + }; + + environment = { + systemPackages = with pkgs; [ + neovim + git + wget + ]; + + variables = { + EDITOR = "nvim"; + }; + }; + + system.stateVersion = "25.11"; +} + diff --git a/hosts/lyra/hardware-configuration.nix b/hosts/lyra/hardware-configuration.nix new file mode 100644 index 0000000..6dbf2fa --- /dev/null +++ b/hosts/lyra/hardware-configuration.nix @@ -0,0 +1,33 @@ +# 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 = [ "ahci" "xhci_pci" "megaraid_sas" "usb_storage" "usbhid" "sd_mod" ]; + boot.initrd.kernelModules = [ ]; + boot.kernelModules = [ "kvm-intel" ]; + boot.extraModulePackages = [ ]; + + fileSystems."/" = + { device = "/dev/disk/by-uuid/1bc53888-6db8-46df-aa28-975b710c5de8"; + fsType = "ext4"; + }; + + fileSystems."/boot" = + { device = "/dev/disk/by-uuid/12CE-A600"; + fsType = "vfat"; + options = [ "fmask=0077" "dmask=0077" ]; + }; + + swapDevices = + [ { device = "/dev/disk/by-uuid/60643004-6916-46b3-8655-66fdc28cf5ad"; } + ]; + + nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux"; + hardware.cpu.intel.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware; +} diff --git a/snow.nix b/snow.nix index 8b9dcad..932b744 100644 --- a/snow.nix +++ b/snow.nix @@ -23,6 +23,15 @@ cerulean.mkNexus ./. (self: { user = "foxora"; }; }; + + lyra = { + system = "x86_64-linux"; + deploy.ssh = { + host = "10.16.1.58"; + port = 2222; + user = "foxora"; + }; + }; }; }; }) From d63d04d30148bdc4a46340996532c278ea03a290 Mon Sep 17 00:00:00 2001 From: foxora Date: Sun, 15 Feb 2026 11:12:16 +0000 Subject: [PATCH 35/36] added back stable branch, broken though because cerulean no support channel overrides --- flake.lock | 21 +++++++++++++++++++-- flake.nix | 3 ++- groups/all/default.nix | 6 ++++++ groups/servers/default.nix | 17 +++++++++++++++++ groups/unstable-base/default.nix | 5 +++++ hosts/arcturus/default.nix | 18 ------------------ hosts/lyra/default.nix | 18 ------------------ hosts/nixarawrui/default.nix | 30 +----------------------------- nixpkgs.nix | 10 ++++++++++ snow.nix | 28 +++++++++++++++++++++++++++- 10 files changed, 87 insertions(+), 69 deletions(-) create mode 100644 groups/all/default.nix create mode 100644 groups/servers/default.nix create mode 100644 groups/unstable-base/default.nix diff --git a/flake.lock b/flake.lock index b086454..8c4cb70 100644 --- a/flake.lock +++ b/flake.lock @@ -145,7 +145,7 @@ "inputs": { "deploy-rs": "deploy-rs", "nixpkgs": [ - "nixpkgs-unstable" + "nixpkgs" ], "nixpkgs-unstable": [ "nixpkgs-unstable" @@ -1257,6 +1257,22 @@ } }, "nixpkgs_10": { + "locked": { + "lastModified": 1771043024, + "narHash": "sha256-O1XDr7EWbRp+kHrNNgLWgIrB0/US5wvw9K6RERWAj6I=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "3aadb7ca9eac2891d52a9dec199d9580a6e2bf44", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-25.11", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_11": { "locked": { "lastModified": 1769461804, "narHash": "sha256-msG8SU5WsBUfVVa/9RPLaymvi5bI8edTavbIq3vRlhI=", @@ -1473,6 +1489,7 @@ "nix-alien": "nix-alien", "nixcats": "nixcats", "nixcord": "nixcord", + "nixpkgs": "nixpkgs_10", "nixpkgs-staging": "nixpkgs-staging", "nixpkgs-unstable": "nixpkgs-unstable", "sddm-silent": "sddm-silent", @@ -1739,7 +1756,7 @@ "zen": { "inputs": { "home-manager": "home-manager_2", - "nixpkgs": "nixpkgs_10" + "nixpkgs": "nixpkgs_11" }, "locked": { "lastModified": 1770910552, diff --git a/flake.nix b/flake.nix index 3c4eacf..3735804 100644 --- a/flake.nix +++ b/flake.nix @@ -4,6 +4,7 @@ inputs = { systems.url = "github:nix-systems/default"; + nixpkgs.url = "github:NixOS/nixpkgs/nixos-25.11"; nixpkgs-unstable.url = "github:NixOS/nixpkgs/nixos-unstable"; nixpkgs-staging.url = "github:NixOS/nixpkgs/staging-next"; @@ -16,7 +17,7 @@ url = "github:emilelcb/Cerulean"; inputs = { systems.follows = "systems"; - nixpkgs.follows = "nixpkgs-unstable"; + nixpkgs.follows = "nixpkgs"; nixpkgs-unstable.follows = "nixpkgs-unstable"; }; }; diff --git a/groups/all/default.nix b/groups/all/default.nix new file mode 100644 index 0000000..a7c21fd --- /dev/null +++ b/groups/all/default.nix @@ -0,0 +1,6 @@ +{ ... }: { + nix.settings = { + experimental-features = ["nix-command" "flakes"]; + download-buffer-size = 524288000; + }; +} diff --git a/groups/servers/default.nix b/groups/servers/default.nix new file mode 100644 index 0000000..b142ca8 --- /dev/null +++ b/groups/servers/default.nix @@ -0,0 +1,17 @@ +{ ... }: { + nix.settings = { + trusted-users = ["root" "@wheel"]; + }; + + security = { + sudo = { + enable = true; + wheelNeedsPassword = true; + }; + + pam = { + sshAgentAuth.enable = true; + services.sudo.sshAgentAuth = true; # pam_ssh_agent_auth module + }; + }; +} diff --git a/groups/unstable-base/default.nix b/groups/unstable-base/default.nix new file mode 100644 index 0000000..1afa015 --- /dev/null +++ b/groups/unstable-base/default.nix @@ -0,0 +1,5 @@ +{lib, config, ...}: { + nixpkgs.channels.default = { + default = lib.mkForce config.nixpkgs-unstable.channels.default.pkgs; + }; +} diff --git a/hosts/arcturus/default.nix b/hosts/arcturus/default.nix index cdbc104..aa0e179 100644 --- a/hosts/arcturus/default.nix +++ b/hosts/arcturus/default.nix @@ -6,12 +6,6 @@ networking.hostName = "arcturus"; - nix.settings = { - experimental-features = ["nix-command" "flakes"]; - download-buffer-size = 524288000; - trusted-users = ["root" "@wheel"]; - }; - time.timeZone = "Europe/London"; i18n.defaultLocale = "en_US.UTF-8"; console = { @@ -27,18 +21,6 @@ }; }; - security = { - sudo = { - enable = true; - wheelNeedsPassword = true; - }; - - pam = { - sshAgentAuth.enable = true; - services.sudo.sshAgentAuth = true; # pam_ssh_agent_auth module - }; - }; - networking = { useNetworkd = false; useDHCP = false; diff --git a/hosts/lyra/default.nix b/hosts/lyra/default.nix index 6f90f17..499d59e 100644 --- a/hosts/lyra/default.nix +++ b/hosts/lyra/default.nix @@ -6,12 +6,6 @@ networking.hostName = "lyra"; - nix.settings = { - experimental-features = ["nix-command" "flakes"]; - download-buffer-size = 524288000; - trusted-users = ["root" "@wheel"]; - }; - time.timeZone = "Europe/London"; i18n.defaultLocale = "en_US.UTF-8"; console = { @@ -27,18 +21,6 @@ }; }; - security = { - sudo = { - enable = true; - wheelNeedsPassword = true; - }; - - pam = { - sshAgentAuth.enable = true; - services.sudo.sshAgentAuth = true; # pam_ssh_agent_auth module - }; - }; - networking = { networkmanager.enable = true; diff --git a/hosts/nixarawrui/default.nix b/hosts/nixarawrui/default.nix index ba6d75a..010b67a 100644 --- a/hosts/nixarawrui/default.nix +++ b/hosts/nixarawrui/default.nix @@ -10,12 +10,6 @@ ./modules/amdgpu-ignore-ctx-privileges.nix ]; - # Enable the Flakes feature and the accompaying new nix command-line tool - nix.settings = { - experimental-features = ["nix-command" "flakes"]; - download-buffer-size = 524288000; - }; - # Use the systemd-boot EFI boot loader. boot = rec { initrd.kernelModules = ["amdgpu"]; @@ -335,27 +329,5 @@ inputs.nix-alien.packages.${stdenv.hostPlatform.system}.nix-alien ]; - # Copy the NixOS configuration file and link it from the resulting system - # (/run/current-system/configuration.nix). This is useful in case you - # accidentally delete configuration.nix. - # system.copySystemConfiguration = true; - - # This option defines the first version of NixOS you have installed on this particular machine, - # and is used to maintain compatibility with application data (e.g. databases) created on older NixOS versions. - # - # Most users should NEVER change this value after the initial install, for any reason, - # even if you've upgraded your system to a new NixOS release. - # - # This value does NOT affect the Nixupkgs version your packages and OS are pulled from, - # so changing it will NOT upgrade your system - see https://nixos.org/manual/nixos/stable/#sec-upgrading for how - # to actually do that. - # - # This value being lower than the current NixOS release does NOT mean your system is - # out of date, out of support, or vulnerable. - # - # Do NOT change this value unless you have manually inspected all the changes it would make to your configuration, - # and migrated your data accordingly. - # - # For more information, see `man configuration.nix` or https://nixos.org/manual/nixos/stable/options#opt-system.stateVersion . - system.stateVersion = "24.11"; # Did you read the comment? + system.stateVersion = "24.11"; } diff --git a/nixpkgs.nix b/nixpkgs.nix index 2428743..43eb7f7 100644 --- a/nixpkgs.nix +++ b/nixpkgs.nix @@ -5,6 +5,15 @@ } @ args: { nixpkgs.channels.default = rec { default = upkgs; + + # nixpkgs + pkgs = { + inherit system; + source = inputs.nixpkgs; + overlays = []; + config.allowUnfree = true; + }; + # nixpkgs-unstable upkgs = { inherit system; @@ -19,6 +28,7 @@ config.allowUnfree = true; }; + # nixpkgs-staging spkgs = { inherit system; diff --git a/snow.nix b/snow.nix index 932b744..1fea348 100644 --- a/snow.nix +++ b/snow.nix @@ -7,9 +7,25 @@ cerulean.mkNexus ./. (self: { home-manager.nixosModules.home-manager ]; - nodes = { + groups = { + unstable-base = {}; + servers = {}; + }; + + nodes = let + inherit + (self.nexus) + groups + ; + in + { nixarawrui = { system = "x86_64-linux"; + + groups = [ + groups.unstable-base + ]; + extraModules = with inputs; [ sddm-silent.nixosModules.default ]; @@ -17,6 +33,11 @@ cerulean.mkNexus ./. (self: { arcturus = { system = "x86_64-linux"; + + groups = [ + groups.servers + ]; + deploy.ssh = { host = "10.16.1.163"; port = 2222; @@ -26,6 +47,11 @@ cerulean.mkNexus ./. (self: { lyra = { system = "x86_64-linux"; + + groups = [ + groups.servers + ]; + deploy.ssh = { host = "10.16.1.58"; port = 2222; From 75f907f61b6d85aec424c348e8b3d4d81952c9af Mon Sep 17 00:00:00 2001 From: foxora Date: Sun, 15 Feb 2026 11:12:16 +0000 Subject: [PATCH 36/36] added back stable branch, broken though because cerulean no support channel overrides --- flake.lock | 21 +++++++++++++++++++-- flake.nix | 3 ++- groups/all/default.nix | 6 ++++++ groups/servers/default.nix | 17 +++++++++++++++++ groups/unstable-base/default.nix | 5 +++++ hosts/arcturus/default.nix | 18 ------------------ hosts/lyra/default.nix | 18 ------------------ hosts/nixarawrui/default.nix | 30 +----------------------------- nixpkgs.nix | 10 ++++++++++ snow.nix | 28 +++++++++++++++++++++++++++- 10 files changed, 87 insertions(+), 69 deletions(-) create mode 100644 groups/all/default.nix create mode 100644 groups/servers/default.nix create mode 100644 groups/unstable-base/default.nix diff --git a/flake.lock b/flake.lock index b086454..8c4cb70 100644 --- a/flake.lock +++ b/flake.lock @@ -145,7 +145,7 @@ "inputs": { "deploy-rs": "deploy-rs", "nixpkgs": [ - "nixpkgs-unstable" + "nixpkgs" ], "nixpkgs-unstable": [ "nixpkgs-unstable" @@ -1257,6 +1257,22 @@ } }, "nixpkgs_10": { + "locked": { + "lastModified": 1771043024, + "narHash": "sha256-O1XDr7EWbRp+kHrNNgLWgIrB0/US5wvw9K6RERWAj6I=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "3aadb7ca9eac2891d52a9dec199d9580a6e2bf44", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-25.11", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_11": { "locked": { "lastModified": 1769461804, "narHash": "sha256-msG8SU5WsBUfVVa/9RPLaymvi5bI8edTavbIq3vRlhI=", @@ -1473,6 +1489,7 @@ "nix-alien": "nix-alien", "nixcats": "nixcats", "nixcord": "nixcord", + "nixpkgs": "nixpkgs_10", "nixpkgs-staging": "nixpkgs-staging", "nixpkgs-unstable": "nixpkgs-unstable", "sddm-silent": "sddm-silent", @@ -1739,7 +1756,7 @@ "zen": { "inputs": { "home-manager": "home-manager_2", - "nixpkgs": "nixpkgs_10" + "nixpkgs": "nixpkgs_11" }, "locked": { "lastModified": 1770910552, diff --git a/flake.nix b/flake.nix index 3c4eacf..3735804 100644 --- a/flake.nix +++ b/flake.nix @@ -4,6 +4,7 @@ inputs = { systems.url = "github:nix-systems/default"; + nixpkgs.url = "github:NixOS/nixpkgs/nixos-25.11"; nixpkgs-unstable.url = "github:NixOS/nixpkgs/nixos-unstable"; nixpkgs-staging.url = "github:NixOS/nixpkgs/staging-next"; @@ -16,7 +17,7 @@ url = "github:emilelcb/Cerulean"; inputs = { systems.follows = "systems"; - nixpkgs.follows = "nixpkgs-unstable"; + nixpkgs.follows = "nixpkgs"; nixpkgs-unstable.follows = "nixpkgs-unstable"; }; }; diff --git a/groups/all/default.nix b/groups/all/default.nix new file mode 100644 index 0000000..a7c21fd --- /dev/null +++ b/groups/all/default.nix @@ -0,0 +1,6 @@ +{ ... }: { + nix.settings = { + experimental-features = ["nix-command" "flakes"]; + download-buffer-size = 524288000; + }; +} diff --git a/groups/servers/default.nix b/groups/servers/default.nix new file mode 100644 index 0000000..b142ca8 --- /dev/null +++ b/groups/servers/default.nix @@ -0,0 +1,17 @@ +{ ... }: { + nix.settings = { + trusted-users = ["root" "@wheel"]; + }; + + security = { + sudo = { + enable = true; + wheelNeedsPassword = true; + }; + + pam = { + sshAgentAuth.enable = true; + services.sudo.sshAgentAuth = true; # pam_ssh_agent_auth module + }; + }; +} diff --git a/groups/unstable-base/default.nix b/groups/unstable-base/default.nix new file mode 100644 index 0000000..1afa015 --- /dev/null +++ b/groups/unstable-base/default.nix @@ -0,0 +1,5 @@ +{lib, config, ...}: { + nixpkgs.channels.default = { + default = lib.mkForce config.nixpkgs-unstable.channels.default.pkgs; + }; +} diff --git a/hosts/arcturus/default.nix b/hosts/arcturus/default.nix index cdbc104..aa0e179 100644 --- a/hosts/arcturus/default.nix +++ b/hosts/arcturus/default.nix @@ -6,12 +6,6 @@ networking.hostName = "arcturus"; - nix.settings = { - experimental-features = ["nix-command" "flakes"]; - download-buffer-size = 524288000; - trusted-users = ["root" "@wheel"]; - }; - time.timeZone = "Europe/London"; i18n.defaultLocale = "en_US.UTF-8"; console = { @@ -27,18 +21,6 @@ }; }; - security = { - sudo = { - enable = true; - wheelNeedsPassword = true; - }; - - pam = { - sshAgentAuth.enable = true; - services.sudo.sshAgentAuth = true; # pam_ssh_agent_auth module - }; - }; - networking = { useNetworkd = false; useDHCP = false; diff --git a/hosts/lyra/default.nix b/hosts/lyra/default.nix index 6f90f17..499d59e 100644 --- a/hosts/lyra/default.nix +++ b/hosts/lyra/default.nix @@ -6,12 +6,6 @@ networking.hostName = "lyra"; - nix.settings = { - experimental-features = ["nix-command" "flakes"]; - download-buffer-size = 524288000; - trusted-users = ["root" "@wheel"]; - }; - time.timeZone = "Europe/London"; i18n.defaultLocale = "en_US.UTF-8"; console = { @@ -27,18 +21,6 @@ }; }; - security = { - sudo = { - enable = true; - wheelNeedsPassword = true; - }; - - pam = { - sshAgentAuth.enable = true; - services.sudo.sshAgentAuth = true; # pam_ssh_agent_auth module - }; - }; - networking = { networkmanager.enable = true; diff --git a/hosts/nixarawrui/default.nix b/hosts/nixarawrui/default.nix index ba6d75a..010b67a 100644 --- a/hosts/nixarawrui/default.nix +++ b/hosts/nixarawrui/default.nix @@ -10,12 +10,6 @@ ./modules/amdgpu-ignore-ctx-privileges.nix ]; - # Enable the Flakes feature and the accompaying new nix command-line tool - nix.settings = { - experimental-features = ["nix-command" "flakes"]; - download-buffer-size = 524288000; - }; - # Use the systemd-boot EFI boot loader. boot = rec { initrd.kernelModules = ["amdgpu"]; @@ -335,27 +329,5 @@ inputs.nix-alien.packages.${stdenv.hostPlatform.system}.nix-alien ]; - # Copy the NixOS configuration file and link it from the resulting system - # (/run/current-system/configuration.nix). This is useful in case you - # accidentally delete configuration.nix. - # system.copySystemConfiguration = true; - - # This option defines the first version of NixOS you have installed on this particular machine, - # and is used to maintain compatibility with application data (e.g. databases) created on older NixOS versions. - # - # Most users should NEVER change this value after the initial install, for any reason, - # even if you've upgraded your system to a new NixOS release. - # - # This value does NOT affect the Nixupkgs version your packages and OS are pulled from, - # so changing it will NOT upgrade your system - see https://nixos.org/manual/nixos/stable/#sec-upgrading for how - # to actually do that. - # - # This value being lower than the current NixOS release does NOT mean your system is - # out of date, out of support, or vulnerable. - # - # Do NOT change this value unless you have manually inspected all the changes it would make to your configuration, - # and migrated your data accordingly. - # - # For more information, see `man configuration.nix` or https://nixos.org/manual/nixos/stable/options#opt-system.stateVersion . - system.stateVersion = "24.11"; # Did you read the comment? + system.stateVersion = "24.11"; } diff --git a/nixpkgs.nix b/nixpkgs.nix index 2428743..43eb7f7 100644 --- a/nixpkgs.nix +++ b/nixpkgs.nix @@ -5,6 +5,15 @@ } @ args: { nixpkgs.channels.default = rec { default = upkgs; + + # nixpkgs + pkgs = { + inherit system; + source = inputs.nixpkgs; + overlays = []; + config.allowUnfree = true; + }; + # nixpkgs-unstable upkgs = { inherit system; @@ -19,6 +28,7 @@ config.allowUnfree = true; }; + # nixpkgs-staging spkgs = { inherit system; diff --git a/snow.nix b/snow.nix index 932b744..1fea348 100644 --- a/snow.nix +++ b/snow.nix @@ -7,9 +7,25 @@ cerulean.mkNexus ./. (self: { home-manager.nixosModules.home-manager ]; - nodes = { + groups = { + unstable-base = {}; + servers = {}; + }; + + nodes = let + inherit + (self.nexus) + groups + ; + in + { nixarawrui = { system = "x86_64-linux"; + + groups = [ + groups.unstable-base + ]; + extraModules = with inputs; [ sddm-silent.nixosModules.default ]; @@ -17,6 +33,11 @@ cerulean.mkNexus ./. (self: { arcturus = { system = "x86_64-linux"; + + groups = [ + groups.servers + ]; + deploy.ssh = { host = "10.16.1.163"; port = 2222; @@ -26,6 +47,11 @@ cerulean.mkNexus ./. (self: { lyra = { system = "x86_64-linux"; + + groups = [ + groups.servers + ]; + deploy.ssh = { host = "10.16.1.58"; port = 2222;