Compare commits
No commits in common. "main" and "pc/latest" have entirely different histories.
61 changed files with 1214 additions and 1259 deletions
6
.gitignore
vendored
6
.gitignore
vendored
|
|
@ -1,7 +1,5 @@
|
||||||
hidden/
|
ISSUES/
|
||||||
|
secrets/
|
||||||
|
|
||||||
result
|
result
|
||||||
rebuild*.log
|
rebuild*.log
|
||||||
|
|
||||||
secrets/
|
|
||||||
!/secrets
|
|
||||||
|
|
|
||||||
|
|
@ -4,6 +4,6 @@ keys:
|
||||||
creation_rules:
|
creation_rules:
|
||||||
- path_regex: secrets/[^/]+\.(yaml|json|env|ini)$
|
- path_regex: secrets/[^/]+\.(yaml|json|env|ini)$
|
||||||
key_groups:
|
key_groups:
|
||||||
- pgp:
|
- age:
|
||||||
- *cry
|
- *cry
|
||||||
- *idk
|
- *idk
|
||||||
|
|
|
||||||
23
TODO.md
23
TODO.md
|
|
@ -1,26 +1,9 @@
|
||||||
- [ ] get kanshi working with hyprland
|
|
||||||
|
|
||||||
- [ ] Update the README.md
|
- [ ] Update the README.md
|
||||||
- [ ] switch ssh keys to ECC (fuck RSA)
|
- [ ] switch ssh keys to ECC (fuck RSA)
|
||||||
|
- [ ] forgejo not post-quantum (fix that)
|
||||||
|
|
||||||
|
- [X] migrate forge.dobutterfliescry.net -> tearforge.net
|
||||||
|
- [X] rename forgejo user to git
|
||||||
- [ ] setup my own VPN
|
- [ ] setup my own VPN
|
||||||
- [ ] connect matcha to my VPN
|
- [ ] connect matcha to my VPN
|
||||||
- [ ] use matcha to build stuff instead of using my laptop
|
- [ ] use matcha to build stuff instead of using my laptop
|
||||||
|
|
||||||
- [ ] switch to zsh? or maybe elvish?
|
|
||||||
- [ ] switch to neovim
|
|
||||||
- [ ] switch to mangowc
|
|
||||||
|
|
||||||
- [ ] fix my fuck ass emojis
|
|
||||||
|
|
||||||
# add sddm profile pic
|
|
||||||
systemd.tmpfiles.rules = let
|
|
||||||
imagePath = /${root}/homes/aurora/profile.png;
|
|
||||||
in
|
|
||||||
lib.mkIf (builtins.pathExists imagePath) [
|
|
||||||
"L /var/lib/AccountsService/icons/${config.home.username} - - - - ${imagePath}"
|
|
||||||
];
|
|
||||||
|
|
||||||
|
|
||||||
# Cerulean should automatically add set home-managers `home.username` and `home.homeDirectory`
|
|
||||||
# (this can be done by using .extendModule from the nixos module system :3)
|
|
||||||
|
|
|
||||||
20
colors.rasi
Normal file
20
colors.rasi
Normal file
|
|
@ -0,0 +1,20 @@
|
||||||
|
* {
|
||||||
|
background: rgba(51,37,65,0.9);
|
||||||
|
foreground: rgba(198,186,227,0.9);
|
||||||
|
color00: rgba(78,66,70,0.9);
|
||||||
|
color01: rgba(111,91,159,0.9);
|
||||||
|
color02: rgba(120,98,164,0.9);
|
||||||
|
color03: rgba(131,128,181,0.9);
|
||||||
|
color04: rgba(154,127,183,0.9);
|
||||||
|
color05: rgba(157,129,185,0.9);
|
||||||
|
color06: rgba(123,153,183,0.9);
|
||||||
|
color07: rgba(165,148,207,0.9);
|
||||||
|
color08: rgba(115,103,145,0.9);
|
||||||
|
color09: rgba(129,102,193,0.9);
|
||||||
|
color10: rgba(140,112,199,0.9);
|
||||||
|
color11: rgba(145,141,218,0.9);
|
||||||
|
color12: rgba(170,126,217,0.9);
|
||||||
|
color13: rgba(174,130,220,0.9);
|
||||||
|
color14: rgba(135,181,228,0.9);
|
||||||
|
color15: rgba(165,148,207,0.9);
|
||||||
|
}
|
||||||
183
flake.lock
generated
183
flake.lock
generated
|
|
@ -37,11 +37,11 @@
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1773436376,
|
"lastModified": 1772292445,
|
||||||
"narHash": "sha256-OUPRrprbgN27BXHuWkMAPSCfLLQ/uwpWghEfKYN2iAg=",
|
"narHash": "sha256-4F1Q7U313TKUDDovCC96m/Za4wZcJ3yqtu4eSrj8lk8=",
|
||||||
"owner": "hyprwm",
|
"owner": "hyprwm",
|
||||||
"repo": "aquamarine",
|
"repo": "aquamarine",
|
||||||
"rev": "43f10d24391692bba3d762931ee35e7f17f8e8b8",
|
"rev": "1dbbba659c1cef0b0202ce92cadfe13bae550e8f",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
|
|
@ -273,11 +273,11 @@
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1772408722,
|
"lastModified": 1769996383,
|
||||||
"narHash": "sha256-rHuJtdcOjK7rAHpHphUb1iCvgkU3GpfvicLMwwnfMT0=",
|
"narHash": "sha256-AnYjnFWgS49RlqX7LrC4uA+sCCDBj0Ry/WOJ5XWAsa0=",
|
||||||
"owner": "hercules-ci",
|
"owner": "hercules-ci",
|
||||||
"repo": "flake-parts",
|
"repo": "flake-parts",
|
||||||
"rev": "f20dc5d9b8027381c474144ecabc9034d6a839a3",
|
"rev": "57928607ea566b5db3ad13af0e57e921e6b12381",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
|
|
@ -291,11 +291,11 @@
|
||||||
"nixpkgs-lib": "nixpkgs-lib_2"
|
"nixpkgs-lib": "nixpkgs-lib_2"
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1772408722,
|
"lastModified": 1769996383,
|
||||||
"narHash": "sha256-rHuJtdcOjK7rAHpHphUb1iCvgkU3GpfvicLMwwnfMT0=",
|
"narHash": "sha256-AnYjnFWgS49RlqX7LrC4uA+sCCDBj0Ry/WOJ5XWAsa0=",
|
||||||
"owner": "hercules-ci",
|
"owner": "hercules-ci",
|
||||||
"repo": "flake-parts",
|
"repo": "flake-parts",
|
||||||
"rev": "f20dc5d9b8027381c474144ecabc9034d6a839a3",
|
"rev": "57928607ea566b5db3ad13af0e57e921e6b12381",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
|
|
@ -392,11 +392,11 @@
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1772985280,
|
"lastModified": 1770260404,
|
||||||
"narHash": "sha256-FdrNykOoY9VStevU4zjSUdvsL9SzJTcXt4omdEDZDLk=",
|
"narHash": "sha256-3iVX1+7YUIt23hBx1WZsUllhbmP2EnXrV8tCRbLxHc8=",
|
||||||
"owner": "nix-community",
|
"owner": "nix-community",
|
||||||
"repo": "home-manager",
|
"repo": "home-manager",
|
||||||
"rev": "8f736f007139d7f70752657dff6a401a585d6cbc",
|
"rev": "0d782ee42c86b196acff08acfbf41bb7d13eed5b",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
|
|
@ -422,11 +422,11 @@
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1772461003,
|
"lastModified": 1753964049,
|
||||||
"narHash": "sha256-pVICsV7FtcEeVwg5y/LFh3XFUkVJninm/P1j/JHzEbM=",
|
"narHash": "sha256-lIqabfBY7z/OANxHoPeIrDJrFyYy9jAM4GQLzZ2feCM=",
|
||||||
"owner": "hyprwm",
|
"owner": "hyprwm",
|
||||||
"repo": "hyprcursor",
|
"repo": "hyprcursor",
|
||||||
"rev": "b62396457b9cfe2ebf24fe05404b09d2a40f8ed7",
|
"rev": "44e91d467bdad8dcf8bbd2ac7cf49972540980a5",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
|
|
@ -451,11 +451,11 @@
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1772461523,
|
"lastModified": 1770511807,
|
||||||
"narHash": "sha256-mI6A51do+hEUzeJKk9YSWfVHdI/SEEIBi2tp5Whq5mI=",
|
"narHash": "sha256-suKmSbSk34uPOJDTg/GbPrKEJutzK08vj0VoTvAFBCA=",
|
||||||
"owner": "hyprwm",
|
"owner": "hyprwm",
|
||||||
"repo": "hyprgraphics",
|
"repo": "hyprgraphics",
|
||||||
"rev": "7d63c04b4a2dd5e59ef943b4b143f46e713df804",
|
"rev": "7c75487edd43a71b61adb01cae8326d277aab683",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
|
|
@ -476,7 +476,7 @@
|
||||||
"hyprwayland-scanner": "hyprwayland-scanner",
|
"hyprwayland-scanner": "hyprwayland-scanner",
|
||||||
"hyprwire": "hyprwire",
|
"hyprwire": "hyprwire",
|
||||||
"nixpkgs": [
|
"nixpkgs": [
|
||||||
"nixpkgs-unstable"
|
"nixpkgs"
|
||||||
],
|
],
|
||||||
"pre-commit-hooks": "pre-commit-hooks",
|
"pre-commit-hooks": "pre-commit-hooks",
|
||||||
"systems": [
|
"systems": [
|
||||||
|
|
@ -485,17 +485,17 @@
|
||||||
"xdph": "xdph"
|
"xdph": "xdph"
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1774136452,
|
"lastModified": 1772862346,
|
||||||
"narHash": "sha256-pSwj8WNWXMuZaDqCyhQwlngRD3JyNmZwldSe6UqWAos=",
|
"narHash": "sha256-cfzHdBAkACrE2kuFlVPub2W7qZwobsrHcmYhoKVLtdY=",
|
||||||
"owner": "hyprwm",
|
"ref": "refs/heads/main",
|
||||||
"repo": "Hyprland",
|
"rev": "b41882c169f589848f0efb10c88c1dad383af04b",
|
||||||
"rev": "bf31f642b08a8d8ca796a1b713285f2580805c2f",
|
"revCount": 6999,
|
||||||
"type": "github"
|
"type": "git",
|
||||||
|
"url": "https://tearforge.net/cry/Hyprland"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
"owner": "hyprwm",
|
"type": "git",
|
||||||
"repo": "Hyprland",
|
"url": "https://tearforge.net/cry/Hyprland"
|
||||||
"type": "github"
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"hyprland-guiutils": {
|
"hyprland-guiutils": {
|
||||||
|
|
@ -531,11 +531,11 @@
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1772467975,
|
"lastModified": 1767023960,
|
||||||
"narHash": "sha256-kipyuDBxrZq+beYpZqWzGvFWm4QbayW9agAvi94vDXY=",
|
"narHash": "sha256-R2HgtVS1G3KSIKAQ77aOZ+Q0HituOmPgXW9nBNkpp3Q=",
|
||||||
"owner": "hyprwm",
|
"owner": "hyprwm",
|
||||||
"repo": "hyprland-guiutils",
|
"repo": "hyprland-guiutils",
|
||||||
"rev": "5e1c6b9025aaf4d578f3eff7c0eb1f0c197a9507",
|
"rev": "c2e906261142f5dd1ee0bfc44abba23e2754c660",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
|
|
@ -556,11 +556,11 @@
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1772460177,
|
"lastModified": 1765214753,
|
||||||
"narHash": "sha256-/6G/MsPvtn7bc4Y32pserBT/Z4SUUdBd4XYJpOEKVR4=",
|
"narHash": "sha256-P9zdGXOzToJJgu5sVjv7oeOGPIIwrd9hAUAP3PsmBBs=",
|
||||||
"owner": "hyprwm",
|
"owner": "hyprwm",
|
||||||
"repo": "hyprland-protocols",
|
"repo": "hyprland-protocols",
|
||||||
"rev": "1cb6db5fd6bb8aee419f4457402fa18293ace917",
|
"rev": "3f3860b869014c00e8b9e0528c7b4ddc335c21ab",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
|
|
@ -585,11 +585,11 @@
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1772459629,
|
"lastModified": 1771866172,
|
||||||
"narHash": "sha256-/iwvNUYShmmnwmz/czEUh6+0eF5vCMv0xtDW0STPIuM=",
|
"narHash": "sha256-fYFoXhQLrm1rD8vSFKQBOEX4OGCuJdLt1amKfHd5GAw=",
|
||||||
"owner": "hyprwm",
|
"owner": "hyprwm",
|
||||||
"repo": "hyprlang",
|
"repo": "hyprlang",
|
||||||
"rev": "7615ee388de18239a4ab1400946f3d0e498a8186",
|
"rev": "0b219224910e7642eb0ed49f0db5ec3d008e3e41",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
|
|
@ -637,11 +637,11 @@
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1772462885,
|
"lastModified": 1764592794,
|
||||||
"narHash": "sha256-5pHXrQK9zasMnIo6yME6EOXmWGFMSnCITcfKshhKJ9I=",
|
"narHash": "sha256-7CcO+wbTJ1L1NBQHierHzheQGPWwkIQug/w+fhTAVuU=",
|
||||||
"owner": "hyprwm",
|
"owner": "hyprwm",
|
||||||
"repo": "hyprtoolkit",
|
"repo": "hyprtoolkit",
|
||||||
"rev": "9af245a69fa6b286b88ddfc340afd288e00a6998",
|
"rev": "5cfe0743f0e608e1462972303778d8a0859ee63e",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
|
|
@ -662,11 +662,11 @@
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1773948364,
|
"lastModified": 1771271487,
|
||||||
"narHash": "sha256-S76omfIVQ1TpGiXFbqih6o6XcH3sA5+5QI+SXB4HvlY=",
|
"narHash": "sha256-41gEiUS0Pyw3L/ge1l8MXn61cK14VAhgWB/JV8s/oNI=",
|
||||||
"owner": "hyprwm",
|
"owner": "hyprwm",
|
||||||
"repo": "hyprutils",
|
"repo": "hyprutils",
|
||||||
"rev": "b85b779e3e3a1adcd9b098e3447cf48f9e780b35",
|
"rev": "340a792e3b3d482c4ae5f66d27a9096bdee6d76d",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
|
|
@ -687,11 +687,11 @@
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1772459835,
|
"lastModified": 1770501770,
|
||||||
"narHash": "sha256-978jRz/y/9TKmZb/qD4lEYHCQGHpEXGqy+8X2lFZsak=",
|
"narHash": "sha256-NWRM6+YxTRv+bT9yvlhhJ2iLae1B1pNH3mAL5wi2rlQ=",
|
||||||
"owner": "hyprwm",
|
"owner": "hyprwm",
|
||||||
"repo": "hyprwayland-scanner",
|
"repo": "hyprwayland-scanner",
|
||||||
"rev": "0a692d4a645165eebd65f109146b8861e3a925e7",
|
"rev": "0bd8b6cde9ec27d48aad9e5b4deefb3746909d40",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
|
|
@ -716,11 +716,11 @@
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1773074819,
|
"lastModified": 1771606233,
|
||||||
"narHash": "sha256-qRqYnXiKoJLRTcfaRukn7EifmST2IVBUMZOeZMAc5UA=",
|
"narHash": "sha256-F3PLUqQ/TwgR70U+UeOqJnihJZ2EuunzojYC4g5xHr0=",
|
||||||
"owner": "hyprwm",
|
"owner": "hyprwm",
|
||||||
"repo": "hyprwire",
|
"repo": "hyprwire",
|
||||||
"rev": "f68afd0e73687598cc2774804fedad76693046f0",
|
"rev": "06c7f1f8c4194786c8400653c4efc49dc14c0f3a",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
|
|
@ -823,11 +823,11 @@
|
||||||
"scenefx": "scenefx"
|
"scenefx": "scenefx"
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1773034081,
|
"lastModified": 1771732288,
|
||||||
"narHash": "sha256-tH1yy1LQYtmGWnCU7whsdX0iGpc2dvaJ+7p6rvuKkHg=",
|
"narHash": "sha256-N1H7LMWXYNn7zN9ghp4vHlBs4O/Rw/+ZEoPUpm9ozw4=",
|
||||||
"owner": "DreamMaoMao",
|
"owner": "DreamMaoMao",
|
||||||
"repo": "mango",
|
"repo": "mango",
|
||||||
"rev": "db30977196b91cfe2e5db8e9829faafe13417bd9",
|
"rev": "6b2d694b234cae9876eb81e27991439eb51860f1",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
|
|
@ -901,11 +901,11 @@
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"dir": "packages/nix",
|
"dir": "packages/nix",
|
||||||
"lastModified": 1774360398,
|
"lastModified": 1772390578,
|
||||||
"narHash": "sha256-IvuZMTxTe5osTszZp4r27X/F0R7FVhLWkP7g6pYMgTs=",
|
"narHash": "sha256-3yQlDZz9JZqPFiYYj8fQkpCXUzjlAw4s7zaZ2n0wFmE=",
|
||||||
"owner": "SteamClientHomebrew",
|
"owner": "SteamClientHomebrew",
|
||||||
"repo": "millennium",
|
"repo": "millennium",
|
||||||
"rev": "4378aac79283a11912dd1a7adf89f79ab3736a87",
|
"rev": "41d8c701e1f1ed4362e8378d12bbe5cb0cb811d6",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
|
|
@ -1066,15 +1066,14 @@
|
||||||
"flake-parts": "flake-parts_3",
|
"flake-parts": "flake-parts_3",
|
||||||
"nixpkgs": [
|
"nixpkgs": [
|
||||||
"nixpkgs"
|
"nixpkgs"
|
||||||
],
|
]
|
||||||
"nixpkgs-nixcord": "nixpkgs-nixcord"
|
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1774312874,
|
"lastModified": 1771375681,
|
||||||
"narHash": "sha256-mFc7Iy+Oqwr7Vwb7CmNIWilSYiTw2857imf6Rb75ITg=",
|
"narHash": "sha256-qDDw0ruBZ1kt63j4uVP5Xrd1OxGKIYrSFnig0z6ozSw=",
|
||||||
"owner": "FlameFlag",
|
"owner": "FlameFlag",
|
||||||
"repo": "nixcord",
|
"repo": "nixcord",
|
||||||
"rev": "71f4b3f92ca534c3665deb63e229195955d96cf9",
|
"rev": "d030dbb48ab020092681a39c878c1d48a553ffc1",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
|
|
@ -1085,11 +1084,11 @@
|
||||||
},
|
},
|
||||||
"nixpkgs": {
|
"nixpkgs": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1772822230,
|
"lastModified": 1771903837,
|
||||||
"narHash": "sha256-yf3iYLGbGVlIthlQIk5/4/EQDZNNEmuqKZkQssMljuw=",
|
"narHash": "sha256-sdaqdnsQCv3iifzxwB22tUwN/fSHoN7j2myFW5EIkGk=",
|
||||||
"owner": "nixos",
|
"owner": "nixos",
|
||||||
"repo": "nixpkgs",
|
"repo": "nixpkgs",
|
||||||
"rev": "71caefce12ba78d84fe618cf61644dce01cf3a96",
|
"rev": "e764fc9a405871f1f6ca3d1394fb422e0a0c3951",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
|
|
@ -1116,11 +1115,11 @@
|
||||||
},
|
},
|
||||||
"nixpkgs-lib_2": {
|
"nixpkgs-lib_2": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1772328832,
|
"lastModified": 1769909678,
|
||||||
"narHash": "sha256-e+/T/pmEkLP6BHhYjx6GmwP5ivonQQn0bJdH9YrRB+Q=",
|
"narHash": "sha256-cBEymOf4/o3FD5AZnzC3J9hLbiZ+QDT/KDuyHXVJOpM=",
|
||||||
"owner": "nix-community",
|
"owner": "nix-community",
|
||||||
"repo": "nixpkgs.lib",
|
"repo": "nixpkgs.lib",
|
||||||
"rev": "c185c7a5e5dd8f9add5b2f8ebeff00888b070742",
|
"rev": "72716169fe93074c333e8d0173151350670b824c",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
|
|
@ -1131,11 +1130,11 @@
|
||||||
},
|
},
|
||||||
"nixpkgs-master": {
|
"nixpkgs-master": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1773068446,
|
"lastModified": 1772170669,
|
||||||
"narHash": "sha256-MCEmktH6AFJH8Pg1rBGB2Q0FhS5z5K87IsMbUU8uzHI=",
|
"narHash": "sha256-ClBvX0YzaJOaGZInNi0e3mFknzr/rAdwKbWrjO1j1sg=",
|
||||||
"owner": "NixOS",
|
"owner": "NixOS",
|
||||||
"repo": "nixpkgs",
|
"repo": "nixpkgs",
|
||||||
"rev": "70b7278e2c0acc26ad3360551bf9c15c5ccc0acd",
|
"rev": "ee234284495a7ff3ecffb062595102fdc4fbe617",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
|
|
@ -1145,29 +1144,13 @@
|
||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"nixpkgs-nixcord": {
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1773222311,
|
|
||||||
"narHash": "sha256-BHoB/XpbqoZkVYZCfXJXfkR+GXFqwb/4zbWnOr2cRcU=",
|
|
||||||
"owner": "NixOS",
|
|
||||||
"repo": "nixpkgs",
|
|
||||||
"rev": "0590cd39f728e129122770c029970378a79d076a",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "NixOS",
|
|
||||||
"ref": "nixos-25.11",
|
|
||||||
"repo": "nixpkgs",
|
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"nixpkgs-unstable": {
|
"nixpkgs-unstable": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1772773019,
|
"lastModified": 1771008912,
|
||||||
"narHash": "sha256-E1bxHxNKfDoQUuvriG71+f+s/NT0qWkImXsYZNFFfCs=",
|
"narHash": "sha256-gf2AmWVTs8lEq7z/3ZAsgnZDhWIckkb+ZnAo5RzSxJg=",
|
||||||
"owner": "NixOS",
|
"owner": "NixOS",
|
||||||
"repo": "nixpkgs",
|
"repo": "nixpkgs",
|
||||||
"rev": "aca4d95fce4914b3892661bcb80b8087293536c6",
|
"rev": "a82ccc39b39b621151d6732718e3e250109076fa",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
|
|
@ -1223,11 +1206,11 @@
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1772893680,
|
"lastModified": 1772024342,
|
||||||
"narHash": "sha256-JDqZMgxUTCq85ObSaFw0HhE+lvdOre1lx9iI6vYyOEs=",
|
"narHash": "sha256-+eXlIc4/7dE6EcPs9a2DaSY3fTA9AE526hGqkNID3Wg=",
|
||||||
"owner": "cachix",
|
"owner": "cachix",
|
||||||
"repo": "git-hooks.nix",
|
"repo": "git-hooks.nix",
|
||||||
"rev": "8baab586afc9c9b57645a734c820e4ac0a604af9",
|
"rev": "6e34e97ed9788b17796ee43ccdbaf871a5c2b476",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
|
|
@ -1326,11 +1309,11 @@
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1771956684,
|
"lastModified": 1769900466,
|
||||||
"narHash": "sha256-+EtzmEzGA2xqwIvKrP0euYaOzrmTQWEWAiWV+k2WBEM=",
|
"narHash": "sha256-WeoJBj/PhqFCCJEIycTipqPbKm5BpQT2uzFTYcYZ30I=",
|
||||||
"owner": "uiriansan",
|
"owner": "uiriansan",
|
||||||
"repo": "SilentSDDM",
|
"repo": "SilentSDDM",
|
||||||
"rev": "34f82e1fb8412fff78b82a0dcce763492b36054c",
|
"rev": "a44caf771b4cb72f5c2514f7d488455b0fa860d2",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
|
|
@ -1386,11 +1369,11 @@
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1773007504,
|
"lastModified": 1772494187,
|
||||||
"narHash": "sha256-4NtiCDH3RunKbrlWvPCB6dyTjCwqdrHaBDeMCzG6gIA=",
|
"narHash": "sha256-6ksgNAFXVK+Cg/6ww7bB2nJUPZlnS75UwZC7G+L03EE=",
|
||||||
"owner": "Gerg-L",
|
"owner": "Gerg-L",
|
||||||
"repo": "spicetify-nix",
|
"repo": "spicetify-nix",
|
||||||
"rev": "434e63b851f9139aaeddc3b8de44d47992828b3b",
|
"rev": "915ab06b046d05613041780c575c62a32fe67cea",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
|
|
@ -1529,11 +1512,11 @@
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1772669058,
|
"lastModified": 1761431178,
|
||||||
"narHash": "sha256-XhnY0aRuDo5LT8pmJVPofPOgO2hAR7T+XRoaQxtNPzQ=",
|
"narHash": "sha256-xzjC1CV3+wpUQKNF+GnadnkeGUCJX+vgaWIZsnz9tzI=",
|
||||||
"owner": "hyprwm",
|
"owner": "hyprwm",
|
||||||
"repo": "xdg-desktop-portal-hyprland",
|
"repo": "xdg-desktop-portal-hyprland",
|
||||||
"rev": "906d0ac159803a7df2dc1f948df9327670380f69",
|
"rev": "4b8801228ff958d028f588f0c2b911dbf32297f9",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
|
|
|
||||||
|
|
@ -16,7 +16,9 @@
|
||||||
nt.url = "git+https://tearforge.net/cry/nt";
|
nt.url = "git+https://tearforge.net/cry/nt";
|
||||||
|
|
||||||
cerulean = {
|
cerulean = {
|
||||||
|
# url = "github:cry128/cerulean/v0.2.5-alpha";
|
||||||
url = "github:cry128/cerulean/refactor/snowflake";
|
url = "github:cry128/cerulean/refactor/snowflake";
|
||||||
|
# url = "/home/me/cry/mk/cerulean";
|
||||||
inputs = {
|
inputs = {
|
||||||
nt.follows = "nt";
|
nt.follows = "nt";
|
||||||
systems.follows = "systems";
|
systems.follows = "systems";
|
||||||
|
|
@ -40,10 +42,12 @@
|
||||||
};
|
};
|
||||||
|
|
||||||
hyprland = {
|
hyprland = {
|
||||||
url = "github:hyprwm/Hyprland";
|
# FUCK HYPRLAND
|
||||||
|
# url = "github:hyprwm/Hyprland/4152ac76d0813d9d0f67d2f04653a13fa6e17433";
|
||||||
|
url = "git+https://tearforge.net/cry/Hyprland";
|
||||||
|
|
||||||
inputs = {
|
inputs = {
|
||||||
nixpkgs.follows = "nixpkgs-unstable";
|
nixpkgs.follows = "nixpkgs";
|
||||||
systems.follows = "systems";
|
systems.follows = "systems";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
|
||||||
|
|
@ -25,6 +25,8 @@
|
||||||
|
|
||||||
# Games
|
# Games
|
||||||
upkgs.olympus # celeste
|
upkgs.olympus # celeste
|
||||||
|
discord
|
||||||
|
discordo
|
||||||
upkgs.ekphos
|
upkgs.ekphos
|
||||||
|
|
||||||
prismlauncher # minecraft
|
prismlauncher # minecraft
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,6 @@
|
||||||
{...}: {
|
{lib, ...}: {
|
||||||
imports = [
|
imports = [
|
||||||
./programs.nix
|
./programs.nix
|
||||||
./keybinds.nix
|
|
||||||
];
|
];
|
||||||
|
|
||||||
boot.loader = {
|
boot.loader = {
|
||||||
|
|
@ -84,20 +83,10 @@
|
||||||
alsa.support32Bit = true;
|
alsa.support32Bit = true;
|
||||||
# pulse.enable = true;
|
# pulse.enable = true;
|
||||||
# jack.enable = true;
|
# jack.enable = true;
|
||||||
|
|
||||||
# disable X11 bell module, which plays a sound on urgency hint
|
|
||||||
extraConfig = {
|
|
||||||
pipewire."99-silent-bell.conf" = {
|
|
||||||
"context.properties" = {
|
|
||||||
"module.x11.bell" = false;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
# allows pipewire to use the realtime scheduler for increased performance
|
security.rtkit.enable = true; # I *think* this is for pipewire
|
||||||
security.rtkit.enable = true;
|
|
||||||
|
|
||||||
# ---- ENVIRONMENT VARIABLES ----
|
# ---- ENVIRONMENT VARIABLES ----
|
||||||
environment = {
|
environment = {
|
||||||
|
|
|
||||||
|
|
@ -1,19 +0,0 @@
|
||||||
{...}: {
|
|
||||||
services.keyd = {
|
|
||||||
enable = true;
|
|
||||||
keyboards.default = {
|
|
||||||
ids = ["*"];
|
|
||||||
settings = {
|
|
||||||
main = {
|
|
||||||
capslock = "meta";
|
|
||||||
|
|
||||||
# NOTE: unsure whether or not i like oneshot...
|
|
||||||
# shift = "oneshot(shift)";
|
|
||||||
# control = "oneshot(control)";
|
|
||||||
# leftalt = "oneshot(alt)";
|
|
||||||
# rightalt = "oneshot(rightalt)";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
@ -45,7 +45,6 @@
|
||||||
nix-prefetch-git
|
nix-prefetch-git
|
||||||
nix-index
|
nix-index
|
||||||
nix-unit
|
nix-unit
|
||||||
ns # nix-search-tv overlay
|
|
||||||
|
|
||||||
# Python
|
# Python
|
||||||
python312 # I use 3.12 since it's in a pretty stable state now
|
python312 # I use 3.12 since it's in a pretty stable state now
|
||||||
|
|
|
||||||
|
|
@ -16,7 +16,7 @@
|
||||||
# accept Lets Encrypt's security policy
|
# accept Lets Encrypt's security policy
|
||||||
acme = {
|
acme = {
|
||||||
acceptTerms = true;
|
acceptTerms = true;
|
||||||
defaults.email = "them@dobutterfliescry.net";
|
defaults.email = "eclarkboman@gmail.com";
|
||||||
};
|
};
|
||||||
|
|
||||||
# allow SSH keys for passwordless auth
|
# allow SSH keys for passwordless auth
|
||||||
|
|
|
||||||
|
|
@ -1,50 +1,36 @@
|
||||||
{pkgs, ...}: {
|
{pkgs, ...}: {
|
||||||
imports = [
|
imports = [
|
||||||
./modules/cli/git.nix
|
../modules/fish.nix
|
||||||
./modules/cli/ssh.nix
|
../modules/btop.nix
|
||||||
|
../modules/tmux.nix
|
||||||
|
../modules/git.nix
|
||||||
|
../modules/bat.nix
|
||||||
../modules/term/foot.nix
|
../modules/term/foot.nix
|
||||||
../modules/shell/zsh.nix
|
|
||||||
../modules/shell/zsh.nix
|
|
||||||
../modules/shell/fish.nix
|
|
||||||
../modules/shell/elvish.nix
|
|
||||||
../modules/editor/helix.nix
|
../modules/editor/helix.nix
|
||||||
../modules/editor/neovim
|
../modules/editor/neovim
|
||||||
|
|
||||||
../modules/cli/bat.nix
|
|
||||||
../modules/cli/btop.nix
|
|
||||||
../modules/cli/hyfetch.nix
|
|
||||||
../modules/cli/tmux.nix
|
|
||||||
|
|
||||||
../modules/apps/firefox.nix
|
../modules/apps/firefox.nix
|
||||||
../modules/apps/zen-browser.nix
|
../modules/apps/zen-browser.nix
|
||||||
../modules/apps/thunderbird.nix
|
../modules/apps/thunderbird.nix
|
||||||
../modules/apps/nixcord.nix
|
../modules/apps/nixcord.nix
|
||||||
../modules/apps/spicetify.nix
|
../modules/apps/spicetify.nix
|
||||||
|
|
||||||
../modules/wm/hyprland
|
# ../modules/wm
|
||||||
../modules/wm/mango
|
../modules/wm/mangowc.nix
|
||||||
../modules/de/mako.nix
|
# ../modules/wm/hypr/hyprland.nix
|
||||||
../modules/de/waybar
|
# ../modules/wm/hypr/hyprlock.nix
|
||||||
|
../modules/kanshi.nix
|
||||||
|
../modules/mako.nix
|
||||||
];
|
];
|
||||||
|
|
||||||
programs.elvish.enable = true;
|
|
||||||
|
|
||||||
home = {
|
home = {
|
||||||
shellAliases = {
|
shellAliases = {
|
||||||
# nix
|
|
||||||
nd = "nix develop";
|
nd = "nix develop";
|
||||||
ntv = "nix-search-tv";
|
|
||||||
rebuild = "nh os switch ~/flake";
|
rebuild = "nh os switch ~/flake";
|
||||||
trybuild = "nh os test ~/flake";
|
trybuild = "nh os test ~/flake";
|
||||||
|
brip = "batgrep"; # bat + ripgrep
|
||||||
# shell utilities
|
man = "batman"; # bat + man
|
||||||
ls = "eza --color=auto";
|
|
||||||
l = "eza -Alh --color=auto --icons=auto";
|
|
||||||
ll = "eza -lh --color=auto --icons=auto";
|
|
||||||
li = "eza --color=auto --git-ignore";
|
|
||||||
rgf = "rg --files | rg";
|
|
||||||
watch = "viddy";
|
|
||||||
};
|
};
|
||||||
|
|
||||||
pointerCursor = {
|
pointerCursor = {
|
||||||
|
|
@ -57,13 +43,14 @@
|
||||||
|
|
||||||
packages = with pkgs; [
|
packages = with pkgs; [
|
||||||
# for services.gnome-keyring
|
# for services.gnome-keyring
|
||||||
gcr # provides org.gnome.keyring.SystemPrompter
|
pkgs.gcr # provides org.gnome.keyring.SystemPrompter
|
||||||
seahorse # gui
|
seahorse # gui
|
||||||
|
|
||||||
krita
|
krita
|
||||||
|
|
||||||
tor-browser
|
tor-browser
|
||||||
|
|
||||||
fuzzel
|
fuzzel
|
||||||
|
|
||||||
speedtest-cli
|
speedtest-cli
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
|
|
@ -94,9 +81,98 @@
|
||||||
style.name = "gtk2";
|
style.name = "gtk2";
|
||||||
};
|
};
|
||||||
|
|
||||||
|
programs = {
|
||||||
|
hyfetch = {
|
||||||
|
enable = true;
|
||||||
|
settings = {
|
||||||
|
backend = "neofetch";
|
||||||
|
args = null;
|
||||||
|
distro = null;
|
||||||
|
|
||||||
|
preset = "transfeminine"; # "nonbinary";
|
||||||
|
pride_month_disable = false;
|
||||||
|
custom_ascii_path = null;
|
||||||
|
|
||||||
|
mode = "rgb";
|
||||||
|
light_dark = "dark";
|
||||||
|
auto_detect_light_dark = true;
|
||||||
|
lightness = 0.65;
|
||||||
|
color_align = {
|
||||||
|
mode = "horizontal";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
zsh = {
|
||||||
|
enable = true;
|
||||||
|
enableCompletion = true;
|
||||||
|
autosuggestion.enable = true;
|
||||||
|
syntaxHighlighting.enable = true;
|
||||||
|
|
||||||
|
history = {
|
||||||
|
size = 10000;
|
||||||
|
ignoreAllDups = true;
|
||||||
|
path = "$HOME/.zsh_history";
|
||||||
|
ignorePatterns = [
|
||||||
|
"rm *"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
# set ssh profiles
|
||||||
|
# WARNING: this DOES NOT start the ssh-agent
|
||||||
|
# WARNING: for that you need to use `services.ssh-agent.enable`
|
||||||
|
ssh = {
|
||||||
|
enable = true;
|
||||||
|
forwardAgent = false;
|
||||||
|
addKeysToAgent = "yes";
|
||||||
|
|
||||||
|
matchBlocks = {
|
||||||
|
butterfly = {
|
||||||
|
hostname = "dobutterfliescry.net";
|
||||||
|
user = "cry";
|
||||||
|
port = 42069;
|
||||||
|
identityFile = "~/keys/butterfly";
|
||||||
|
setEnv = {
|
||||||
|
TERM = "xterm-256color";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
hyrule = {
|
||||||
|
hostname = "hyrule.dobutterfliescry.net";
|
||||||
|
user = "cry";
|
||||||
|
port = 42069;
|
||||||
|
identityFile = "~/keys/hyrule";
|
||||||
|
setEnv = {
|
||||||
|
TERM = "xterm-256color";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
matcha = {
|
||||||
|
hostname = "192.168.88.250";
|
||||||
|
user = "emile";
|
||||||
|
port = 22;
|
||||||
|
identityFile = "~/keys/matcha";
|
||||||
|
};
|
||||||
|
youcue = {
|
||||||
|
hostname = "moss.labs.eait.uq.edu.au";
|
||||||
|
user = "s4740056";
|
||||||
|
port = 22;
|
||||||
|
identityFile = "~/keys/other/youcue";
|
||||||
|
setEnv = {
|
||||||
|
TERM = "xterm-256color";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
services = {
|
services = {
|
||||||
|
# enable OpenSSH private key agent
|
||||||
|
# ssh-agent.enable = true;
|
||||||
|
|
||||||
gnome-keyring.enable = true;
|
gnome-keyring.enable = true;
|
||||||
};
|
};
|
||||||
|
# the ssh-agent won't set this for itself...
|
||||||
|
# systemd.user.sessionVariables.SSH_AUTH_SOCK = "$XDG_RUNTIME_DIR/ssh-agent";
|
||||||
|
|
||||||
home.stateVersion = "24.05"; # don't change this
|
home.stateVersion = "24.05"; # don't change this
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,46 +0,0 @@
|
||||||
{...}: {
|
|
||||||
# set ssh profiles
|
|
||||||
# WARNING: this DOES NOT start the ssh-agent
|
|
||||||
# WARNING: for that you need to use `services.ssh-agent.enable`
|
|
||||||
programs.ssh = {
|
|
||||||
enable = true;
|
|
||||||
forwardAgent = false;
|
|
||||||
addKeysToAgent = "yes";
|
|
||||||
|
|
||||||
matchBlocks = {
|
|
||||||
butterfly = {
|
|
||||||
hostname = "dobutterfliescry.net";
|
|
||||||
user = "cry";
|
|
||||||
port = 42069;
|
|
||||||
identityFile = "~/keys/butterfly";
|
|
||||||
setEnv = {
|
|
||||||
TERM = "xterm-256color";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
hyrule = {
|
|
||||||
hostname = "hyrule.dobutterfliescry.net";
|
|
||||||
user = "cry";
|
|
||||||
port = 42069;
|
|
||||||
identityFile = "~/keys/hyrule";
|
|
||||||
setEnv = {
|
|
||||||
TERM = "xterm-256color";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
matcha = {
|
|
||||||
hostname = "192.168.88.250";
|
|
||||||
user = "cry";
|
|
||||||
port = 22;
|
|
||||||
identityFile = "~/keys/matcha";
|
|
||||||
};
|
|
||||||
youcue = {
|
|
||||||
hostname = "moss.labs.eait.uq.edu.au";
|
|
||||||
user = "s4740056";
|
|
||||||
port = 22;
|
|
||||||
identityFile = "~/keys/other/youcue";
|
|
||||||
setEnv = {
|
|
||||||
TERM = "xterm-256color";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
||||||
30
homes/modules/ags/config.js
Executable file
30
homes/modules/ags/config.js
Executable file
|
|
@ -0,0 +1,30 @@
|
||||||
|
import { AppLauncher } from "./widgets/applauncher.js"
|
||||||
|
//import { Notifications } from "./widgets/notifications.js"
|
||||||
|
|
||||||
|
/*
|
||||||
|
const date = Variable('', {
|
||||||
|
poll: [1000, 'date'],
|
||||||
|
})
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*
|
||||||
|
const Bar = (monitor = 0) => Widget.Window({
|
||||||
|
monitor,
|
||||||
|
name: 'bar${monitor}',
|
||||||
|
anchor: ['top', 'left', 'right'],
|
||||||
|
child: Widget.Label({ label: date.bind() }),
|
||||||
|
})
|
||||||
|
*/
|
||||||
|
|
||||||
|
App.config({
|
||||||
|
style: "./style.css",
|
||||||
|
// icons: "./assets",
|
||||||
|
windows: [
|
||||||
|
//Bar(),
|
||||||
|
AppLauncher,
|
||||||
|
//Notifications()
|
||||||
|
]
|
||||||
|
// gtkTheme: "Adwaita-dark",
|
||||||
|
// cursorTheme: "Qogir",
|
||||||
|
// iconTheme: "MoreWaita",[]
|
||||||
|
})
|
||||||
12
homes/modules/ags/default.nix
Normal file
12
homes/modules/ags/default.nix
Normal file
|
|
@ -0,0 +1,12 @@
|
||||||
|
{pkgs, ...}: {
|
||||||
|
programs.ags = {
|
||||||
|
enable = true;
|
||||||
|
configDir = ./.;
|
||||||
|
|
||||||
|
extraPackages = with pkgs; [
|
||||||
|
gtksourceview
|
||||||
|
webkitgtk
|
||||||
|
accountsservice
|
||||||
|
];
|
||||||
|
};
|
||||||
|
}
|
||||||
0
homes/modules/ags/style.css
Executable file
0
homes/modules/ags/style.css
Executable file
125
homes/modules/ags/widgets/applauncher.js
Executable file
125
homes/modules/ags/widgets/applauncher.js
Executable file
|
|
@ -0,0 +1,125 @@
|
||||||
|
const { query } = await Service.import("applications");
|
||||||
|
const WINDOW_NAME = "applauncher";
|
||||||
|
|
||||||
|
const AppItem = app => Widget.Button({
|
||||||
|
on_clicked: () => {
|
||||||
|
App.closeWindow(WINDOW_NAME)
|
||||||
|
app.launch()
|
||||||
|
},
|
||||||
|
attribute: { app },
|
||||||
|
child: Widget.Box({
|
||||||
|
children: [
|
||||||
|
Widget.Icon({
|
||||||
|
icon: app.icon_name || "",
|
||||||
|
size: 42,
|
||||||
|
}),
|
||||||
|
Widget.Label({
|
||||||
|
class_name: "title",
|
||||||
|
label: app.name,
|
||||||
|
xalign: 0,
|
||||||
|
vpack: "center",
|
||||||
|
truncate: "end",
|
||||||
|
css: "margin-left: 10px;"
|
||||||
|
}),
|
||||||
|
],
|
||||||
|
}),
|
||||||
|
})
|
||||||
|
|
||||||
|
const AppLauncherWidget = ({ width = 500, height = 500, spacing = 12 }) => {
|
||||||
|
let applications = query("").map(AppItem)
|
||||||
|
|
||||||
|
const list = Widget.Box({
|
||||||
|
vertical: true,
|
||||||
|
children: applications,
|
||||||
|
spacing,
|
||||||
|
})
|
||||||
|
|
||||||
|
function refresh() {
|
||||||
|
applications = query("").map(AppItem)
|
||||||
|
list.children = applications
|
||||||
|
}
|
||||||
|
|
||||||
|
const entry = Widget.Entry({
|
||||||
|
placeholder_text: "Search",
|
||||||
|
hexpand: true,
|
||||||
|
css: "min-height: 50px;",
|
||||||
|
|
||||||
|
// launch first item when Enter is pressed
|
||||||
|
on_accept: () => {
|
||||||
|
// only consider applications that are visible in the list
|
||||||
|
const results = applications.filter((item) => item.visible);
|
||||||
|
if (results[0]) {
|
||||||
|
App.toggleWindow(WINDOW_NAME);
|
||||||
|
results[0].attribute.app.launch()
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
// filter the applications based on search term
|
||||||
|
on_change: ({ text }) => applications.forEach(item => {
|
||||||
|
item.visible = item.attribute.app.match(text ?? "")
|
||||||
|
}),
|
||||||
|
})
|
||||||
|
|
||||||
|
return Widget.Box({
|
||||||
|
vertical: false,
|
||||||
|
children: [
|
||||||
|
// LEFT
|
||||||
|
Widget.Box({
|
||||||
|
vertical: true,
|
||||||
|
css: `min-width: ${width}px;`
|
||||||
|
+ `min-height: ${height}px;`
|
||||||
|
+ "background-image: url('https://images2.alphacoders.com/135/1351579.png');"
|
||||||
|
+ "background-size: cover;"
|
||||||
|
+ "background-position: center;"
|
||||||
|
+ "background-repeat: no-repeat;",
|
||||||
|
children: [
|
||||||
|
// align the entry field with the app list
|
||||||
|
Widget.Box({
|
||||||
|
css: `margin: ${spacing * 2}px;`,
|
||||||
|
child: entry,
|
||||||
|
}),
|
||||||
|
],
|
||||||
|
}),
|
||||||
|
|
||||||
|
// RIGHT
|
||||||
|
Widget.Box({
|
||||||
|
vertical: true,
|
||||||
|
css: `margin: ${spacing * 2}px;`,
|
||||||
|
child:
|
||||||
|
// make scrollable
|
||||||
|
Widget.Scrollable({
|
||||||
|
hscroll: "never",
|
||||||
|
css: `min-width: ${width}px; min-height: ${height}px;`,
|
||||||
|
child: list,
|
||||||
|
}),
|
||||||
|
|
||||||
|
setup: self => self.hook(App, (_, windowName, visible) => {
|
||||||
|
if (windowName !== WINDOW_NAME)
|
||||||
|
return
|
||||||
|
|
||||||
|
// when the launcher becomes visible
|
||||||
|
if (visible) {
|
||||||
|
refresh()
|
||||||
|
entry.text = ""
|
||||||
|
entry.grab_focus()
|
||||||
|
}
|
||||||
|
}),
|
||||||
|
}),
|
||||||
|
],
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
// the app launcher should be a singleton
|
||||||
|
export const AppLauncher = Widget.Window({
|
||||||
|
name: WINDOW_NAME,
|
||||||
|
setup: self => self.keybind("Escape", () => {
|
||||||
|
App.closeWindow(WINDOW_NAME)
|
||||||
|
}),
|
||||||
|
visible: false,
|
||||||
|
keymode: "exclusive",
|
||||||
|
child: AppLauncherWidget({
|
||||||
|
width: 500,
|
||||||
|
height: 500,
|
||||||
|
spacing: 12,
|
||||||
|
}),
|
||||||
|
})
|
||||||
38
homes/modules/ags/widgets/bar.ts
Executable file
38
homes/modules/ags/widgets/bar.ts
Executable file
|
|
@ -0,0 +1,38 @@
|
||||||
|
import options from "options"p
|
||||||
|
|
||||||
|
const { start, center, end } = options.bar.layout
|
||||||
|
|
||||||
|
// place all your bar widgets in here
|
||||||
|
const widgets = {
|
||||||
|
expander: () => Widget.Box({ expand: true}),
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
//export type BarWidget = keyof typeof widget;
|
||||||
|
|
||||||
|
export default (monitor: number) => Widget.Window({
|
||||||
|
monitor,
|
||||||
|
class_name: "bar",
|
||||||
|
name: "bar-${monitor}",
|
||||||
|
// anchor: position.bind().as(pos => [pos, "left", "right"]),
|
||||||
|
anchor: ["top", "left", "right"],
|
||||||
|
child: Widget.CenterBox({
|
||||||
|
// ensure bar is shown
|
||||||
|
css: "min-width: 2px; min-height: 2px;"
|
||||||
|
startWidget: Widget.Box({
|
||||||
|
hexpand: true,
|
||||||
|
// map all start widgets to be childen
|
||||||
|
childen: start.bind().as(s => s.map(w => widgets[w]()))
|
||||||
|
}),
|
||||||
|
centerWidget: Widget.Box({
|
||||||
|
hpack: "center",
|
||||||
|
// map all center widgets to be childen
|
||||||
|
childen: center.bind().as(c => c.map(w => widgets[w]()))
|
||||||
|
}),
|
||||||
|
endWidget: Widget.Box({
|
||||||
|
hexpand: true
|
||||||
|
// map all end widgets to be childen
|
||||||
|
childen: end.bind().as(e => e.map(w => widgets[w]()))
|
||||||
|
}),
|
||||||
|
})
|
||||||
|
})
|
||||||
23
homes/modules/ags/widgets/fullscreen.js
Executable file
23
homes/modules/ags/widgets/fullscreen.js
Executable file
|
|
@ -0,0 +1,23 @@
|
||||||
|
const WINDOW_NAME = "fullscreen";
|
||||||
|
|
||||||
|
const Fullscreen = (children) => Widget.Box({
|
||||||
|
vertical: true,
|
||||||
|
css: "background-image: url('~/downloads/wallpaper/kill-my-firstborn/astronaut-pink-blue.png');",
|
||||||
|
//+ "background-size: cover;"
|
||||||
|
//+ "background-position: center;"
|
||||||
|
//+ "background-repeat: no-repeat;",
|
||||||
|
children: children,
|
||||||
|
})
|
||||||
|
|
||||||
|
export const fullscreen = Widget.Window({
|
||||||
|
name: WINDOW_NAME,
|
||||||
|
setup: self => self.keybind("Escape", () => {
|
||||||
|
App.closeWindow(WINDOW_NAME)
|
||||||
|
}),
|
||||||
|
anchor: ["top", "bottom", "left", "right"],
|
||||||
|
visible: false,
|
||||||
|
keymode: "exclusive",
|
||||||
|
child: Fullscreen(
|
||||||
|
Widget.Label({"Hello World"});
|
||||||
|
)
|
||||||
|
})
|
||||||
122
homes/modules/ags/widgets/notifications.js
Normal file
122
homes/modules/ags/widgets/notifications.js
Normal file
|
|
@ -0,0 +1,122 @@
|
||||||
|
const notifications = await Service.import("notifications");
|
||||||
|
|
||||||
|
function NotificationIcon({ app_entry, app_icon, image}) {
|
||||||
|
if (image) {
|
||||||
|
return Widget.Box({
|
||||||
|
css: `background-image: url("${image}");`
|
||||||
|
+ "background-size: contain;"
|
||||||
|
+ "background-repeat: no-repeat;"
|
||||||
|
+ "background-position: center;"
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
let icon = "dialog-information-symbolic"
|
||||||
|
if (Utils.lookUpIcon(app_icon))
|
||||||
|
icon = app_icon
|
||||||
|
|
||||||
|
if (app_entry && Utils.lookUpIcon(app_entry))
|
||||||
|
icon = app_entry
|
||||||
|
|
||||||
|
return Widget.Box({
|
||||||
|
child: Widget.Icon(icon),
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
function Notification(n) {
|
||||||
|
const icon = Widget.Box({
|
||||||
|
vpack: "start",
|
||||||
|
class_name: "icon",
|
||||||
|
child: NotificationIcon(n),
|
||||||
|
})
|
||||||
|
|
||||||
|
const title = Widget.Label({
|
||||||
|
class_name: "title",
|
||||||
|
xalign: 0,
|
||||||
|
justification: "left",
|
||||||
|
hexpand: true,
|
||||||
|
max_width_chars: 24,
|
||||||
|
truncate: "end",
|
||||||
|
wrap: true,
|
||||||
|
label: n.summary,
|
||||||
|
use_markup: true,
|
||||||
|
})
|
||||||
|
|
||||||
|
const body = Widget.Label({
|
||||||
|
class_name: "body",
|
||||||
|
hexpand: true,
|
||||||
|
use_markup: true,
|
||||||
|
xalign: 0,
|
||||||
|
justification: "left",
|
||||||
|
label: n.body,
|
||||||
|
wrap: true,
|
||||||
|
})
|
||||||
|
|
||||||
|
const actions = Widget.Box({
|
||||||
|
class_name: "actions",
|
||||||
|
children: n.actions.map(({ id, label}) => Widget.Button({
|
||||||
|
class_name: "action-button",
|
||||||
|
on_clicked: () => {
|
||||||
|
n.invoke(id),
|
||||||
|
n.dismiss()
|
||||||
|
},
|
||||||
|
hexpand: true,
|
||||||
|
child: Widget.Label(label),
|
||||||
|
})),
|
||||||
|
})
|
||||||
|
|
||||||
|
return Widget.EventBox(
|
||||||
|
{
|
||||||
|
attribute: {id: n.id},
|
||||||
|
on_primary_click: n.dismiss,
|
||||||
|
},
|
||||||
|
Widget.Box(
|
||||||
|
{
|
||||||
|
class_name: `notification ${n.urgency}`,
|
||||||
|
vertical: true,
|
||||||
|
},
|
||||||
|
Widget.Box([
|
||||||
|
icon,
|
||||||
|
Widget.Box(
|
||||||
|
{ vertical: true },
|
||||||
|
title,
|
||||||
|
body,
|
||||||
|
),
|
||||||
|
]),
|
||||||
|
actions,
|
||||||
|
),
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
export function Notifications(monitor = 0) {
|
||||||
|
const list = Widget.Box({
|
||||||
|
vertical: true,
|
||||||
|
children: notifications.popups.map(Notification),
|
||||||
|
})
|
||||||
|
|
||||||
|
function onNotified(_, id) {
|
||||||
|
const n = notifications.getNotification(id)
|
||||||
|
if (n)
|
||||||
|
list.children = [Notification(n), ...list.children]
|
||||||
|
}
|
||||||
|
|
||||||
|
function onDismissed(_, id) {
|
||||||
|
list.children.find(n => n.attribute.id === id)?.destroy()
|
||||||
|
}
|
||||||
|
|
||||||
|
list.hook(notifications, onNotified, "notified")
|
||||||
|
.hook(notifications, onDismissed, "dismissed")
|
||||||
|
|
||||||
|
return Widget.Window({
|
||||||
|
monitor,
|
||||||
|
class_name: "notifications-widget",
|
||||||
|
name: `notifications-${monitor}`,
|
||||||
|
anchor: ["top", "left"],
|
||||||
|
child: Widget.Box({
|
||||||
|
css: "min-width: 2px; min-height: 2px;",
|
||||||
|
class_name: "notifications",
|
||||||
|
vertical: true,
|
||||||
|
child: list,
|
||||||
|
}),
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
@ -1,16 +1,8 @@
|
||||||
{
|
{inputs, ...}: {
|
||||||
inputs,
|
|
||||||
pkgs,
|
|
||||||
...
|
|
||||||
}: {
|
|
||||||
imports = [
|
imports = [
|
||||||
inputs.nixcord.homeModules.nixcord
|
inputs.nixcord.homeModules.nixcord
|
||||||
];
|
];
|
||||||
|
|
||||||
home.packages = with pkgs; [
|
|
||||||
discordo
|
|
||||||
];
|
|
||||||
|
|
||||||
programs.nixcord = {
|
programs.nixcord = {
|
||||||
enable = true;
|
enable = true;
|
||||||
equibop.enable = true;
|
equibop.enable = true;
|
||||||
|
|
@ -26,7 +18,6 @@
|
||||||
"base16-colors.css"
|
"base16-colors.css"
|
||||||
];
|
];
|
||||||
plugins = {
|
plugins = {
|
||||||
invisibleChat.enable = true;
|
|
||||||
anonymiseFileNames = {
|
anonymiseFileNames = {
|
||||||
enable = true;
|
enable = true;
|
||||||
anonymiseByDefault = true;
|
anonymiseByDefault = true;
|
||||||
|
|
@ -58,7 +49,7 @@
|
||||||
separatedDiffs = false;
|
separatedDiffs = false;
|
||||||
};
|
};
|
||||||
fakeNitro.enable = true;
|
fakeNitro.enable = true;
|
||||||
ghosted.enable = false;
|
ghosted.enable = true;
|
||||||
noF1.enable = true;
|
noF1.enable = true;
|
||||||
noMaskedUrlPaste.enable = true;
|
noMaskedUrlPaste.enable = true;
|
||||||
messageLatency = {
|
messageLatency = {
|
||||||
|
|
@ -77,6 +68,7 @@
|
||||||
forwardAnywhere.enable = true;
|
forwardAnywhere.enable = true;
|
||||||
spotifyCrack.enable = true;
|
spotifyCrack.enable = true;
|
||||||
spotifyShareCommands.enable = true;
|
spotifyShareCommands.enable = true;
|
||||||
|
spotifyControls.enable = true;
|
||||||
fullUserInChatbox.enable = true;
|
fullUserInChatbox.enable = true;
|
||||||
gifPaste.enable = true;
|
gifPaste.enable = true;
|
||||||
ignoreActivities = {
|
ignoreActivities = {
|
||||||
|
|
@ -104,11 +96,6 @@
|
||||||
revealAllSpoilers.enable = true;
|
revealAllSpoilers.enable = true;
|
||||||
serverInfo.enable = true;
|
serverInfo.enable = true;
|
||||||
serverListIndicators.enable = true;
|
serverListIndicators.enable = true;
|
||||||
musicControls = {
|
|
||||||
enable = true;
|
|
||||||
showSpotifyControls = true;
|
|
||||||
showSpotifyLyrics = true;
|
|
||||||
};
|
|
||||||
showHiddenChannels.enable = true;
|
showHiddenChannels.enable = true;
|
||||||
showHiddenThings.enable = true;
|
showHiddenThings.enable = true;
|
||||||
showTimeoutDuration = {
|
showTimeoutDuration = {
|
||||||
|
|
@ -146,6 +133,7 @@
|
||||||
whoReacted.enable = true;
|
whoReacted.enable = true;
|
||||||
whosWatching.enable = true;
|
whosWatching.enable = true;
|
||||||
quickReply.enable = true;
|
quickReply.enable = true;
|
||||||
|
questCompleter.enable = true;
|
||||||
shikiCodeblocks = {
|
shikiCodeblocks = {
|
||||||
enable = true;
|
enable = true;
|
||||||
useDevIcon = "COLOR";
|
useDevIcon = "COLOR";
|
||||||
|
|
|
||||||
24
homes/modules/bat.nix
Executable file
24
homes/modules/bat.nix
Executable file
|
|
@ -0,0 +1,24 @@
|
||||||
|
{
|
||||||
|
config,
|
||||||
|
pkgs,
|
||||||
|
...
|
||||||
|
}: {
|
||||||
|
# like `/bin/cat` but with syntax highlighting
|
||||||
|
# TODO: change the pager (maybe use Github:sachaos/viddy instead)
|
||||||
|
programs.bat = {
|
||||||
|
enable = true;
|
||||||
|
config = {
|
||||||
|
pager = "less -FR";
|
||||||
|
theme = "Dracula";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
# other commands that make normal utils prettier
|
||||||
|
home.packages = with pkgs.bat-extras; [
|
||||||
|
batdiff
|
||||||
|
batgrep
|
||||||
|
batman
|
||||||
|
batwatch
|
||||||
|
prettybat
|
||||||
|
];
|
||||||
|
}
|
||||||
|
|
@ -1,109 +0,0 @@
|
||||||
let
|
|
||||||
# Module Meta Configuration
|
|
||||||
setShellAliases = true;
|
|
||||||
supportBash = true;
|
|
||||||
supportZsh = true;
|
|
||||||
supportFish = true;
|
|
||||||
in
|
|
||||||
{
|
|
||||||
osConfig,
|
|
||||||
config,
|
|
||||||
pkgs,
|
|
||||||
lib,
|
|
||||||
username,
|
|
||||||
...
|
|
||||||
}: let
|
|
||||||
inherit
|
|
||||||
(builtins)
|
|
||||||
elemAt
|
|
||||||
;
|
|
||||||
|
|
||||||
inherit
|
|
||||||
(lib)
|
|
||||||
flip
|
|
||||||
mkIf
|
|
||||||
optional
|
|
||||||
splitString
|
|
||||||
;
|
|
||||||
|
|
||||||
cfg = config.programs.bat;
|
|
||||||
|
|
||||||
# NOTE: `<derivation>.pname` can be used instead of `<derivation>.meta.mainProgram`
|
|
||||||
# NOTE: but then `pkgs.bash` would return `"bash-interactive"` which is annoying...
|
|
||||||
shellPkg = osConfig.users.users.${username}.shell;
|
|
||||||
shell = shellPkg.meta.mainProgram;
|
|
||||||
|
|
||||||
pager =
|
|
||||||
cfg.config.pager
|
|
||||||
|> splitString " "
|
|
||||||
|> flip elemAt 0;
|
|
||||||
in {
|
|
||||||
programs.bat = {
|
|
||||||
enable = true;
|
|
||||||
config = {
|
|
||||||
# WARNING: pager must be set for this module to function
|
|
||||||
# NOTE: not sure whether to use ov/moor/viddy as my pager?
|
|
||||||
pager = "less -FR";
|
|
||||||
# theme = "Dracula";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
home = {
|
|
||||||
shellAliases = mkIf setShellAliases {
|
|
||||||
bat = "prettybat";
|
|
||||||
cat = "prettybat";
|
|
||||||
diff = "batdiff";
|
|
||||||
brg = "batgrep";
|
|
||||||
man = "batman";
|
|
||||||
# watch = "batwatch"; # NOTE: using viddy instead atm
|
|
||||||
};
|
|
||||||
|
|
||||||
sessionVariables = {
|
|
||||||
PAGER = pager;
|
|
||||||
|
|
||||||
# REF: https://github.com/eth-p/bat-extras/blob/master/doc/batpipe.md
|
|
||||||
BATPIPE_ENABLE_COLOR = "true";
|
|
||||||
BATPIPE_INSIDE_LESS = "true";
|
|
||||||
BATPIPE_TERM_WIDTH = "-"; # hyphone -> auto detect
|
|
||||||
};
|
|
||||||
|
|
||||||
packages = with pkgs.bat-extras;
|
|
||||||
[
|
|
||||||
batdiff
|
|
||||||
batgrep
|
|
||||||
batman
|
|
||||||
batpipe
|
|
||||||
batwatch
|
|
||||||
prettybat
|
|
||||||
]
|
|
||||||
++ (with pkgs; [
|
|
||||||
bat
|
|
||||||
entr # required by pkgs.bat-extras.batwatch
|
|
||||||
ripgrep # required by pkgs.bat-extras.batgrep
|
|
||||||
delta # required by pkgs.bat-extras.batdiff
|
|
||||||
])
|
|
||||||
++ optional (pkgs?${pager}) pkgs.${pager};
|
|
||||||
};
|
|
||||||
|
|
||||||
# Configure the user's shell to source batpipe
|
|
||||||
# WARNING: only currently supports bash, zsh, & fish
|
|
||||||
programs = {
|
|
||||||
bash = mkIf (supportBash || shell == "bash") {
|
|
||||||
initExtra = ''
|
|
||||||
eval "$(batpipe)"
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
|
|
||||||
zsh = mkIf (supportZsh || shell == "zsh") {
|
|
||||||
initContent = ''
|
|
||||||
eval "$(batpipe)"
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
|
|
||||||
fish = mkIf (supportFish || shell == "fish") {
|
|
||||||
interactiveShellInit = ''
|
|
||||||
eval (batpipe)
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
@ -1,22 +0,0 @@
|
||||||
{...}: {
|
|
||||||
programs.hyfetch = {
|
|
||||||
enable = true;
|
|
||||||
settings = {
|
|
||||||
backend = "neofetch";
|
|
||||||
args = null;
|
|
||||||
distro = null;
|
|
||||||
|
|
||||||
preset = "transfeminine"; # "nonbinary";
|
|
||||||
pride_month_disable = false;
|
|
||||||
custom_ascii_path = null;
|
|
||||||
|
|
||||||
mode = "rgb";
|
|
||||||
light_dark = "dark";
|
|
||||||
auto_detect_light_dark = true;
|
|
||||||
lightness = 0.65;
|
|
||||||
color_align = {
|
|
||||||
mode = "horizontal";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
@ -1,19 +0,0 @@
|
||||||
@define-color colorbg #26233a;
|
|
||||||
@define-color colorfg #eb6f92;
|
|
||||||
|
|
||||||
@define-color color00 #26233a; /* black (Overlay) */
|
|
||||||
@define-color color01 #eb6f92; /* red (Love) */
|
|
||||||
@define-color color02 #9ccfd8; /* green (Foam) */
|
|
||||||
@define-color color03 #f6c177; /* yellow (Gold) */
|
|
||||||
@define-color color04 #31748f; /* blue (Pine) */
|
|
||||||
@define-color color05 #c4a7e7; /* magenta (Iris) */
|
|
||||||
@define-color color06 #ebbcba; /* cyan (Rose) */
|
|
||||||
@define-color color07 #e0def4; /* white (Text) */
|
|
||||||
@define-color color08 #47435d; /* bright black (lighter Overlay) */
|
|
||||||
@define-color color09 #ff98ba; /* bright red (lighter Love) */
|
|
||||||
@define-color color10 #c5f9ff; /* bright green (lighter Foam) */
|
|
||||||
@define-color color11 #ffeb9e; /* bright yellow (lighter Gold) */
|
|
||||||
@define-color color12 #5b9ab7; /* bright blue (lighter Pine) */
|
|
||||||
@define-color color13 #eed0ff; /* bright magenta (lighter Iris) */
|
|
||||||
@define-color color14 #ffe5e3; /* bright cyan (lighter Rose) */
|
|
||||||
@define-color color15 #fefcff; /* bright white (lighter Text) */
|
|
||||||
|
|
@ -1,91 +0,0 @@
|
||||||
{...}: {
|
|
||||||
programs.waybar = {
|
|
||||||
enable = true;
|
|
||||||
settings = {
|
|
||||||
mainBar = {
|
|
||||||
layer = "top";
|
|
||||||
position = "top";
|
|
||||||
height = 30;
|
|
||||||
|
|
||||||
modules-left = ["hyprland/workspaces"];
|
|
||||||
modules-center = ["clock"];
|
|
||||||
modules-right = ["cpu" "memory" "network" "pulseaudio" "privacy" "tray"];
|
|
||||||
|
|
||||||
# left
|
|
||||||
"hyprland/workspaces" = {
|
|
||||||
format = "{id}";
|
|
||||||
};
|
|
||||||
"ext/workspaces" = {
|
|
||||||
# not enabled yet, hyprland and mango need two different configs ;-;
|
|
||||||
format = "{id}";
|
|
||||||
ignore-hidden = true;
|
|
||||||
on-click = "activate";
|
|
||||||
};
|
|
||||||
|
|
||||||
# center
|
|
||||||
"clock" = {
|
|
||||||
format = "{:%b %a | %d %r}";
|
|
||||||
interval = 1;
|
|
||||||
tooltip = false;
|
|
||||||
};
|
|
||||||
|
|
||||||
# right
|
|
||||||
"cpu" = {
|
|
||||||
format = " {usage}%";
|
|
||||||
interval = 1;
|
|
||||||
};
|
|
||||||
"memory" = {
|
|
||||||
format = " {used:0.1f} / {total:0.1f} GiB";
|
|
||||||
interval = 1;
|
|
||||||
};
|
|
||||||
"network" = {
|
|
||||||
format = "{bandwidthUpBits} {bandwidthDownBits} {ifname}";
|
|
||||||
format-wifi = " {bandwidthUpBits} {bandwidthDownBits} {ifname}";
|
|
||||||
format-ethernet = " {bandwidthUpBits} {bandwidthDownBits} {ifname}";
|
|
||||||
format-disconnected = "no internet ~ rawr! ~ ;w;"; # 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;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
style =
|
|
||||||
builtins.readFile ./colors.css
|
|
||||||
+ builtins.readFile ./style.css;
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
@ -1,165 +0,0 @@
|
||||||
* {
|
|
||||||
border: none;
|
|
||||||
border-radius: 0;
|
|
||||||
font-family: 'GeistMono Nerd Font';
|
|
||||||
font-size: 15px;
|
|
||||||
font-weight: bold;
|
|
||||||
min-height: 10px;
|
|
||||||
}
|
|
||||||
window#waybar {
|
|
||||||
background: rgba(0, 0, 0, 0);
|
|
||||||
}
|
|
||||||
/*
|
|
||||||
adds a margin around the edge of the taskbar, surrounding the modules,
|
|
||||||
spacing it out from the edge of the screen and windows below
|
|
||||||
*/
|
|
||||||
window#waybar > 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;
|
|
||||||
min-width: 100px; /* surely there's a better way to fix the size? */
|
|
||||||
}
|
|
||||||
|
|
||||||
#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;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
@ -1,4 +1,5 @@
|
||||||
{
|
{
|
||||||
|
config,
|
||||||
lib,
|
lib,
|
||||||
pkgs,
|
pkgs,
|
||||||
vscodium ? false,
|
vscodium ? false,
|
||||||
|
|
@ -19,7 +20,7 @@
|
||||||
homepage ? null,
|
homepage ? null,
|
||||||
changelog ? null,
|
changelog ? null,
|
||||||
license ? null,
|
license ? null,
|
||||||
maintainers ? [],
|
maintainers ? [lib.maintainers.emileclarkb],
|
||||||
}:
|
}:
|
||||||
with pkgs.vscode-utils.buildVscodeMarketplaceExtension; {
|
with pkgs.vscode-utils.buildVscodeMarketplaceExtension; {
|
||||||
${publisher}.${name} = buildVscodeMarketplaceExtension {
|
${publisher}.${name} = buildVscodeMarketplaceExtension {
|
||||||
|
|
|
||||||
90
homes/modules/fish.nix
Executable file
90
homes/modules/fish.nix
Executable file
|
|
@ -0,0 +1,90 @@
|
||||||
|
{
|
||||||
|
config,
|
||||||
|
lib,
|
||||||
|
pkgs,
|
||||||
|
...
|
||||||
|
}: {
|
||||||
|
options = {
|
||||||
|
morphBashToFish = lib.mkEnableOption "morphBashToFish";
|
||||||
|
};
|
||||||
|
|
||||||
|
# TODO: make the greeting controllable (ie so my VPS can be different)
|
||||||
|
config = {
|
||||||
|
programs.fish = {
|
||||||
|
enable = true;
|
||||||
|
generateCompletions = true;
|
||||||
|
|
||||||
|
# vendor = {
|
||||||
|
# config.enable = true;
|
||||||
|
# functions.enable = true;
|
||||||
|
# completions.enable = true;
|
||||||
|
# };
|
||||||
|
|
||||||
|
interactiveShellInit = let
|
||||||
|
greetings =
|
||||||
|
[
|
||||||
|
"Welcome weary traveller to my shop"
|
||||||
|
"It's dangerous to go alone! Take this."
|
||||||
|
"Do butterflies cry when they're sad?"
|
||||||
|
"I hope they do"
|
||||||
|
"I think Alice is lost..."
|
||||||
|
"I once again retreat to the sanctuary of my virtual realm"
|
||||||
|
|
||||||
|
"Something wicked this way comes"
|
||||||
|
"May your L's be many... and your bitches few"
|
||||||
|
|
||||||
|
"What a horrible night to have a curse."
|
||||||
|
"The ancient spirits of light and dark have been released."
|
||||||
|
"The god of the stars rejects your offering. The ritual can only be performed at night."
|
||||||
|
"You should have just died..."
|
||||||
|
"Supreme Witch, Calamitas has killed every player!"
|
||||||
|
|
||||||
|
"A broken heart beats in fractals" # Key Fairy
|
||||||
|
|
||||||
|
"Remember our promise" # Signalis
|
||||||
|
]
|
||||||
|
|> map (x: "\"${x}\"")
|
||||||
|
|> builtins.concatStringsSep " ";
|
||||||
|
in ''
|
||||||
|
# add dotnet completions if it exists (ie we're in a virtual environment)
|
||||||
|
if type -q dotnet
|
||||||
|
complete -f -c dotnet -a "(dotnet complete (commandline -cp))"
|
||||||
|
end
|
||||||
|
|
||||||
|
function rand_greet
|
||||||
|
set greetings ${greetings}
|
||||||
|
echo -n $greetings[(random 1 (count $greetings))]
|
||||||
|
end
|
||||||
|
|
||||||
|
function gitignore -a type
|
||||||
|
curl -sL "https://www.gitignore.io/api/$type"
|
||||||
|
end
|
||||||
|
|
||||||
|
# ripgrep on files
|
||||||
|
function rgf
|
||||||
|
rg --files | rg $args
|
||||||
|
end
|
||||||
|
|
||||||
|
set -g fish_greeting (rand_greet)
|
||||||
|
|
||||||
|
|
||||||
|
'';
|
||||||
|
|
||||||
|
shellAliases = {
|
||||||
|
brip = "batgrep"; # bat + ripgrep
|
||||||
|
man = "batman"; # bat + man
|
||||||
|
ls = "eza --color=auto";
|
||||||
|
l = "eza -Alh --color=auto --icons=auto";
|
||||||
|
ll = "eza -lh --color=auto --icons=auto";
|
||||||
|
li = "eza --color=auto --git-ignore";
|
||||||
|
};
|
||||||
|
|
||||||
|
plugins = [
|
||||||
|
{
|
||||||
|
name = "grc";
|
||||||
|
src = pkgs.fishPlugins.grc.src;
|
||||||
|
}
|
||||||
|
];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
@ -1,9 +1,13 @@
|
||||||
{...}: {
|
{
|
||||||
|
config,
|
||||||
|
pkgs,
|
||||||
|
...
|
||||||
|
}: {
|
||||||
# Change monitor positions
|
# Change monitor positions
|
||||||
# TODO: find a way to make this modular (ie put something different for my laptop)
|
# TODO: find a way to make this modular (ie put something different for my laptop)
|
||||||
# my idea is to have a "monitors" module and use kanshi for wayland
|
# my idea is to have a "monitors" module and use kanshi for wayland
|
||||||
services.kanshi = {
|
services.kanshi = {
|
||||||
enable = false;
|
enable = true;
|
||||||
systemdTarget = "hyprland-session.target";
|
systemdTarget = "hyprland-session.target";
|
||||||
# You can find your monitors in hyprland by using `hyprctl monitors all`
|
# You can find your monitors in hyprland by using `hyprctl monitors all`
|
||||||
settings = [
|
settings = [
|
||||||
|
|
@ -1,8 +1,4 @@
|
||||||
{
|
{...}: let
|
||||||
lib,
|
|
||||||
hostname,
|
|
||||||
...
|
|
||||||
}: let
|
|
||||||
dracula = rec {
|
dracula = rec {
|
||||||
background = "#282A36";
|
background = "#282A36";
|
||||||
border = cyan;
|
border = cyan;
|
||||||
|
|
@ -19,7 +15,6 @@ in {
|
||||||
enable = true;
|
enable = true;
|
||||||
settings = {
|
settings = {
|
||||||
actions = true;
|
actions = true;
|
||||||
output = lib.optionalString (hostname == "myputer") "DP-2";
|
|
||||||
anchor = "top-right";
|
anchor = "top-right";
|
||||||
layer = "overlay";
|
layer = "overlay";
|
||||||
sort = "-time";
|
sort = "-time";
|
||||||
|
|
@ -41,7 +36,7 @@ in {
|
||||||
ignore-timeout = false;
|
ignore-timeout = false;
|
||||||
|
|
||||||
"actionable=true" = {
|
"actionable=true" = {
|
||||||
anchor = "top-right";
|
anchor = "top-left";
|
||||||
};
|
};
|
||||||
|
|
||||||
"urgency=low" = {
|
"urgency=low" = {
|
||||||
13
homes/modules/rofi.nix
Executable file
13
homes/modules/rofi.nix
Executable file
|
|
@ -0,0 +1,13 @@
|
||||||
|
{
|
||||||
|
config,
|
||||||
|
pkgs,
|
||||||
|
...
|
||||||
|
}: {
|
||||||
|
programs.rofi = {
|
||||||
|
enable = true;
|
||||||
|
package = pkgs.rofi-wayland;
|
||||||
|
font = "JetBrains Mono Nerd Font 10";
|
||||||
|
location = "center";
|
||||||
|
terminal = "${pkgs.rio}/bin/rio";
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
@ -1,16 +0,0 @@
|
||||||
{osConfig, ...}: {
|
|
||||||
assertions = [
|
|
||||||
{
|
|
||||||
assertion = !osConfig.services.gnupg.agent.enable;
|
|
||||||
message = ''
|
|
||||||
It is not recommended to enable both `homeConfig.services.ssh-agent.enable` and `osConfig.services.gnupg.agent.enable`!
|
|
||||||
'';
|
|
||||||
}
|
|
||||||
];
|
|
||||||
|
|
||||||
# enable OpenSSH private key agent
|
|
||||||
services.ssh-agent.enable = true;
|
|
||||||
|
|
||||||
# WARNING: the ssh-agent won't set this for itself...
|
|
||||||
systemd.user.sessionVariables.SSH_AUTH_SOCK = "$XDG_RUNTIME_DIR/ssh-agent";
|
|
||||||
}
|
|
||||||
|
|
@ -1,29 +0,0 @@
|
||||||
{
|
|
||||||
config,
|
|
||||||
pkgs,
|
|
||||||
lib,
|
|
||||||
...
|
|
||||||
}: let
|
|
||||||
cfg = config.programs.elvish;
|
|
||||||
in {
|
|
||||||
options.programs.elvish = {
|
|
||||||
enable = lib.mkEnableOption "elvish";
|
|
||||||
};
|
|
||||||
|
|
||||||
config = lib.mkIf cfg.enable {
|
|
||||||
home = {
|
|
||||||
packages = with pkgs; [elvish];
|
|
||||||
|
|
||||||
file.".elvish/nix.elv".source = let
|
|
||||||
elvish-modules = pkgs.fetchFromGitHub {
|
|
||||||
owner = "zzamboni";
|
|
||||||
repo = "elvish-modules";
|
|
||||||
rev = "9005c970346ab06214b3cd3ed3e70f04f3c632ba";
|
|
||||||
hash = "sha256-/Dwtl12QzPvMoMMGoj+v3dwX2ZwFT8t/bohVy1zDE0c=";
|
|
||||||
};
|
|
||||||
in
|
|
||||||
builtins.toPath "${elvish-modules}/nix.elv";
|
|
||||||
# /${builtins.toPath elvish-modules.outPath}/nix.elv;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
@ -1,71 +0,0 @@
|
||||||
{pkgs, ...}: {
|
|
||||||
programs.fish = {
|
|
||||||
enable = true;
|
|
||||||
generateCompletions = true;
|
|
||||||
|
|
||||||
interactiveShellInit = let
|
|
||||||
greetings =
|
|
||||||
[
|
|
||||||
# Official _cry64 quotes
|
|
||||||
"Do butterflies cry when they're sad?"
|
|
||||||
"I hope they do"
|
|
||||||
"I think Alice is lost..."
|
|
||||||
"I once again retreat to the sanctuary of my virtual realm"
|
|
||||||
|
|
||||||
# Unknown
|
|
||||||
"Welcome weary traveler to my shop"
|
|
||||||
|
|
||||||
# Legend of Zelda
|
|
||||||
"It's dangerous to go alone! Take this."
|
|
||||||
|
|
||||||
# ULTRAKILL
|
|
||||||
"Something wicked this way comes"
|
|
||||||
"May your L's be many... and your bitches few"
|
|
||||||
|
|
||||||
# Terraria
|
|
||||||
"What a horrible night to have a curse."
|
|
||||||
"The ancient spirits of light and dark have been released."
|
|
||||||
|
|
||||||
# Calamity
|
|
||||||
"The god of the stars rejects your offering. The ritual can only be performed at night."
|
|
||||||
"You should have just died..."
|
|
||||||
"Supreme Witch, Calamitas has killed every player!"
|
|
||||||
|
|
||||||
# Key Fairy
|
|
||||||
"A broken heart beats in fractals"
|
|
||||||
|
|
||||||
# Signalis
|
|
||||||
"Remember our promise"
|
|
||||||
]
|
|
||||||
|> map (x: "\"${x}\"")
|
|
||||||
|> builtins.concatStringsSep " ";
|
|
||||||
in ''
|
|
||||||
# add dotnet completions if it exists (ie we're in a virtual environment)
|
|
||||||
if type -q dotnet
|
|
||||||
complete -f -c dotnet -a "(dotnet complete (commandline -cp))"
|
|
||||||
end
|
|
||||||
|
|
||||||
function rand_greet
|
|
||||||
set greetings ${greetings}
|
|
||||||
echo -n $greetings[(random 1 (count $greetings))]
|
|
||||||
end
|
|
||||||
|
|
||||||
function gitignore -a type
|
|
||||||
curl -sL "https://www.gitignore.io/api/$type"
|
|
||||||
end
|
|
||||||
|
|
||||||
function decompile
|
|
||||||
objdump --disassemble --demangle --debugging --debugging-tags $argv | bat --language asm
|
|
||||||
end
|
|
||||||
|
|
||||||
set -g fish_greeting (rand_greet)
|
|
||||||
'';
|
|
||||||
|
|
||||||
plugins = [
|
|
||||||
{
|
|
||||||
name = "grc";
|
|
||||||
src = pkgs.fishPlugins.grc.src;
|
|
||||||
}
|
|
||||||
];
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
@ -1,17 +0,0 @@
|
||||||
{...}: {
|
|
||||||
programs.zsh = {
|
|
||||||
enable = true;
|
|
||||||
enableCompletion = true;
|
|
||||||
autosuggestion.enable = true;
|
|
||||||
syntaxHighlighting.enable = true;
|
|
||||||
|
|
||||||
history = {
|
|
||||||
size = 10000;
|
|
||||||
ignoreAllDups = true;
|
|
||||||
path = "$HOME/.zsh_history";
|
|
||||||
ignorePatterns = [
|
|
||||||
"rm *"
|
|
||||||
];
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
||||||
9
homes/modules/term/default.nix
Normal file
9
homes/modules/term/default.nix
Normal file
|
|
@ -0,0 +1,9 @@
|
||||||
|
{
|
||||||
|
lib,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
{
|
||||||
|
options = {
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -1,4 +1,8 @@
|
||||||
{pkgs, ...}: {
|
{
|
||||||
|
config,
|
||||||
|
pkgs,
|
||||||
|
...
|
||||||
|
}: {
|
||||||
home = {
|
home = {
|
||||||
packages = [
|
packages = [
|
||||||
pkgs.rio
|
pkgs.rio
|
||||||
|
|
|
||||||
209
homes/modules/theme.rasi
Executable file
209
homes/modules/theme.rasi
Executable file
|
|
@ -0,0 +1,209 @@
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* Author : Aditya Shakya (adi1090x)
|
||||||
|
* Github : @adi1090x
|
||||||
|
*
|
||||||
|
* Rofi Theme File
|
||||||
|
* Rofi Version: 1.7.3
|
||||||
|
**/
|
||||||
|
|
||||||
|
/*****----- Configuration -----*****/
|
||||||
|
configuration {
|
||||||
|
modi: "drun,run,filebrowser,window";
|
||||||
|
show-icons: true;
|
||||||
|
display-drun: "APPS";
|
||||||
|
display-run: "RUN";
|
||||||
|
display-filebrowser: "FILES";
|
||||||
|
display-window: "WINDOW";
|
||||||
|
drun-display-format: "{name}";
|
||||||
|
window-format: "{w} · {c} · {t}";
|
||||||
|
}
|
||||||
|
|
||||||
|
/*****----- Global Properties -----*****/
|
||||||
|
* {
|
||||||
|
font: "JetBrains Mono Nerd Font 10";
|
||||||
|
background: #11092D;
|
||||||
|
background-alt: #281657;
|
||||||
|
foreground: #FFFFFF;
|
||||||
|
selected: #DF5296;
|
||||||
|
active: #6E77FF;
|
||||||
|
urgent: #8E3596;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*****----- Main Window -----*****/
|
||||||
|
window {
|
||||||
|
/* properties for window widget */
|
||||||
|
transparency: "real";
|
||||||
|
location: center;
|
||||||
|
anchor: center;
|
||||||
|
fullscreen: false;
|
||||||
|
width: 1000px;
|
||||||
|
x-offset: 0px;
|
||||||
|
y-offset: 0px;
|
||||||
|
|
||||||
|
/* properties for all widgets */
|
||||||
|
enabled: true;
|
||||||
|
border-radius: 15px;
|
||||||
|
cursor: "default";
|
||||||
|
background-color: @background;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*****----- Main Box -----*****/
|
||||||
|
mainbox {
|
||||||
|
enabled: true;
|
||||||
|
spacing: 0px;
|
||||||
|
background-color: transparent;
|
||||||
|
orientation: horizontal;
|
||||||
|
children: [ "imagebox", "listbox" ];
|
||||||
|
}
|
||||||
|
|
||||||
|
imagebox {
|
||||||
|
padding: 20px;
|
||||||
|
background-color: transparent;
|
||||||
|
background-image: url("~/.config/rofi/images/j.jpg", height);
|
||||||
|
orientation: vertical;
|
||||||
|
children: [ "inputbar", "dummy", "mode-switcher" ];
|
||||||
|
}
|
||||||
|
|
||||||
|
listbox {
|
||||||
|
spacing: 20px;
|
||||||
|
padding: 20px;
|
||||||
|
background-color: transparent;
|
||||||
|
orientation: vertical;
|
||||||
|
children: [ "message", "listview" ];
|
||||||
|
}
|
||||||
|
|
||||||
|
dummy {
|
||||||
|
background-color: transparent;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*****----- Inputbar -----*****/
|
||||||
|
inputbar {
|
||||||
|
enabled: true;
|
||||||
|
spacing: 10px;
|
||||||
|
padding: 15px;
|
||||||
|
border-radius: 10px;
|
||||||
|
background-color: @background-alt;
|
||||||
|
text-color: @foreground;
|
||||||
|
children: [ "textbox-prompt-colon", "entry" ];
|
||||||
|
}
|
||||||
|
textbox-prompt-colon {
|
||||||
|
enabled: true;
|
||||||
|
expand: false;
|
||||||
|
str: "";
|
||||||
|
background-color: inherit;
|
||||||
|
text-color: inherit;
|
||||||
|
}
|
||||||
|
entry {
|
||||||
|
enabled: true;
|
||||||
|
background-color: inherit;
|
||||||
|
text-color: inherit;
|
||||||
|
cursor: text;
|
||||||
|
placeholder: "Search";
|
||||||
|
placeholder-color: inherit;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*****----- Mode Switcher -----*****/
|
||||||
|
mode-switcher{
|
||||||
|
enabled: true;
|
||||||
|
spacing: 20px;
|
||||||
|
background-color: transparent;
|
||||||
|
text-color: @foreground;
|
||||||
|
}
|
||||||
|
button {
|
||||||
|
padding: 15px;
|
||||||
|
border-radius: 10px;
|
||||||
|
background-color: @background-alt;
|
||||||
|
text-color: inherit;
|
||||||
|
cursor: pointer;
|
||||||
|
}
|
||||||
|
button selected {
|
||||||
|
background-color: @selected;
|
||||||
|
text-color: @foreground;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*****----- Listview -----*****/
|
||||||
|
listview {
|
||||||
|
enabled: true;
|
||||||
|
columns: 1;
|
||||||
|
lines: 8;
|
||||||
|
cycle: true;
|
||||||
|
dynamic: true;
|
||||||
|
scrollbar: false;
|
||||||
|
layout: vertical;
|
||||||
|
reverse: false;
|
||||||
|
fixed-height: true;
|
||||||
|
fixed-columns: true;
|
||||||
|
|
||||||
|
spacing: 10px;
|
||||||
|
background-color: transparent;
|
||||||
|
text-color: @foreground;
|
||||||
|
cursor: "default";
|
||||||
|
}
|
||||||
|
|
||||||
|
/*****----- Elements -----*****/
|
||||||
|
element {
|
||||||
|
enabled: true;
|
||||||
|
spacing: 15px;
|
||||||
|
padding: 8px;
|
||||||
|
border-radius: 10px;
|
||||||
|
background-color: transparent;
|
||||||
|
text-color: @foreground;
|
||||||
|
cursor: pointer;
|
||||||
|
}
|
||||||
|
element normal.normal {
|
||||||
|
background-color: inherit;
|
||||||
|
text-color: inherit;
|
||||||
|
}
|
||||||
|
element normal.urgent {
|
||||||
|
background-color: @urgent;
|
||||||
|
text-color: @foreground;
|
||||||
|
}
|
||||||
|
element normal.active {
|
||||||
|
background-color: @active;
|
||||||
|
text-color: @foreground;
|
||||||
|
}
|
||||||
|
element selected.normal {
|
||||||
|
background-color: @selected;
|
||||||
|
text-color: @foreground;
|
||||||
|
}
|
||||||
|
element selected.urgent {
|
||||||
|
background-color: @urgent;
|
||||||
|
text-color: @foreground;
|
||||||
|
}
|
||||||
|
element selected.active {
|
||||||
|
background-color: @urgent;
|
||||||
|
text-color: @foreground;
|
||||||
|
}
|
||||||
|
element-icon {
|
||||||
|
background-color: transparent;
|
||||||
|
text-color: inherit;
|
||||||
|
size: 32px;
|
||||||
|
cursor: inherit;
|
||||||
|
}
|
||||||
|
element-text {
|
||||||
|
background-color: transparent;
|
||||||
|
text-color: inherit;
|
||||||
|
cursor: inherit;
|
||||||
|
vertical-align: 0.5;
|
||||||
|
horizontal-align: 0.0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*****----- Message -----*****/
|
||||||
|
message {
|
||||||
|
background-color: transparent;
|
||||||
|
}
|
||||||
|
textbox {
|
||||||
|
padding: 15px;
|
||||||
|
border-radius: 10px;
|
||||||
|
background-color: @background-alt;
|
||||||
|
text-color: @foreground;
|
||||||
|
vertical-align: 0.5;
|
||||||
|
horizontal-align: 0.0;
|
||||||
|
}
|
||||||
|
error-message {
|
||||||
|
padding: 15px;
|
||||||
|
border-radius: 20px;
|
||||||
|
background-color: @background;
|
||||||
|
text-color: @foreground;
|
||||||
|
}
|
||||||
39
homes/modules/wm/default.nix
Normal file
39
homes/modules/wm/default.nix
Normal file
|
|
@ -0,0 +1,39 @@
|
||||||
|
{
|
||||||
|
pkgs,
|
||||||
|
lib,
|
||||||
|
...
|
||||||
|
}: let
|
||||||
|
inherit
|
||||||
|
(lib)
|
||||||
|
mkEnableOption
|
||||||
|
mkOption
|
||||||
|
types
|
||||||
|
;
|
||||||
|
in {
|
||||||
|
imports = [
|
||||||
|
./hypr/hyprland.nix
|
||||||
|
./mangowc.nix
|
||||||
|
];
|
||||||
|
|
||||||
|
options.cryos = {
|
||||||
|
wm = {
|
||||||
|
default = mkOption {
|
||||||
|
type = types.enum ["mangowc" "hyprland"];
|
||||||
|
default = "mangowc";
|
||||||
|
example = "hyprland";
|
||||||
|
description = "Window manager to boot by default.";
|
||||||
|
};
|
||||||
|
hyprland.enabled = mkEnableOption "hyprland";
|
||||||
|
mangowc.enabled = mkEnableOption "mangowc";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
config = {
|
||||||
|
xdg.portal = {
|
||||||
|
enable = true;
|
||||||
|
extraPortals = with pkgs; [
|
||||||
|
# xdg-desktop-portal-gtk
|
||||||
|
];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
29
homes/modules/wm/hypr/hyprland.nix
Executable file
29
homes/modules/wm/hypr/hyprland.nix
Executable file
|
|
@ -0,0 +1,29 @@
|
||||||
|
# NOTE: hyprland must be enabled in BOTH your host config (for running hyprland)
|
||||||
|
# NOTE: and your home-manager config (for managing hyprland's config files)
|
||||||
|
{
|
||||||
|
pkgs,
|
||||||
|
inputs,
|
||||||
|
...
|
||||||
|
}: {
|
||||||
|
config = {
|
||||||
|
wayland.windowManager.hyprland = {
|
||||||
|
enable = true;
|
||||||
|
# package = pkgs.hyprland;
|
||||||
|
package = null;
|
||||||
|
portalPackage = null;
|
||||||
|
|
||||||
|
xwayland.enable = true;
|
||||||
|
|
||||||
|
# systemd = {
|
||||||
|
# enable = true;
|
||||||
|
# # enable autostart of applications
|
||||||
|
# # REF: `man 8 systemd-xdg-autostart-generator`
|
||||||
|
# enableXdgAutostart = true;
|
||||||
|
# };
|
||||||
|
|
||||||
|
# plugins = with inputs; [
|
||||||
|
# split-monitor-workspaces.packages.${pkgs.system}.split
|
||||||
|
# ];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
@ -1,379 +0,0 @@
|
||||||
# NOTE: hyprland must be enabled in BOTH your host config (for running hyprland)
|
|
||||||
# NOTE: and your home-manager config (for managing hyprland's config files)
|
|
||||||
{
|
|
||||||
hostname,
|
|
||||||
pkgs,
|
|
||||||
...
|
|
||||||
}: {
|
|
||||||
imports = [
|
|
||||||
./kanshi.nix
|
|
||||||
];
|
|
||||||
|
|
||||||
home.packages = with pkgs; [
|
|
||||||
playerctl
|
|
||||||
];
|
|
||||||
|
|
||||||
wayland.windowManager.hyprland = {
|
|
||||||
enable = true;
|
|
||||||
package = null;
|
|
||||||
portalPackage = null;
|
|
||||||
|
|
||||||
xwayland.enable = true;
|
|
||||||
|
|
||||||
# systemd= {
|
|
||||||
# enable = true;
|
|
||||||
# # enable autostart of applications
|
|
||||||
# # REF: `man 8 systemd-xdg-autostart-generator`
|
|
||||||
# enableXdgAutostart = true;
|
|
||||||
# };
|
|
||||||
|
|
||||||
settings = {
|
|
||||||
"$MOD" =
|
|
||||||
if hostname == "myputer"
|
|
||||||
then "ALT" # my SUPER key broke ;w;
|
|
||||||
else "SUPER";
|
|
||||||
|
|
||||||
# applications
|
|
||||||
"$editor" = "hx";
|
|
||||||
"$terminal" = "foot";
|
|
||||||
"$menu" = "fuzzel";
|
|
||||||
"$colorpicker" = "hyprpicker | head -c 7 | wl-copy";
|
|
||||||
"$screenshot_region" = "hyprshot -m region --clipboard-only";
|
|
||||||
"$screenshot_window" = "hyprshot -m window --clipboard-only";
|
|
||||||
"$cursorLock" = "~/scripts/bin/hyprland-cursor-lock";
|
|
||||||
|
|
||||||
# startup programs
|
|
||||||
exec-once = [
|
|
||||||
# TODO: make these independent of hyprland, add these to the
|
|
||||||
"mako &"
|
|
||||||
"awww-daemon &"
|
|
||||||
"waybar &"
|
|
||||||
|
|
||||||
# "wl-paste --type text --watch cliphist store"
|
|
||||||
# "wl-paste --type image --watch cliphist store"
|
|
||||||
# "wl-clip-persist --clipboard regular"
|
|
||||||
# "playerctld daemon"
|
|
||||||
];
|
|
||||||
|
|
||||||
# monitor configuration
|
|
||||||
monitor =
|
|
||||||
if hostname == "lolcathost"
|
|
||||||
then [
|
|
||||||
"eDP-1, highres@highrr, 0x0, 1.0" # Programming
|
|
||||||
# "eDP-1, highres@highrr, 0x0, 1.5" # Comfy
|
|
||||||
]
|
|
||||||
else if hostname == "myputer"
|
|
||||||
then [
|
|
||||||
"DP-2, 3840x2160@60.00Hz, 0x0, 1.0"
|
|
||||||
"HDMI-A-1, 1920x1080@119.98Hz, 3840x0, 1.0"
|
|
||||||
]
|
|
||||||
else [];
|
|
||||||
|
|
||||||
# .__. .___ __..___. . . .___ .___. ._. __ __.
|
|
||||||
# [__] [__ (__ | |__| [__ | | / ` (__
|
|
||||||
# | | [___ .__) | | | [___ | _|_ \__. .__)
|
|
||||||
general = {
|
|
||||||
gaps_in = 12; # margin between windows
|
|
||||||
gaps_out = 25; # margin from windows to monitor edge
|
|
||||||
gaps_workspaces = 0; # margin between workspaces (stacks with gaps_out)
|
|
||||||
# float_gaps = 0; # gaps_out but for floating windows
|
|
||||||
|
|
||||||
border_size = 4;
|
|
||||||
|
|
||||||
"col.active_border" = "rgba(33ccffee) rgba(00ff99ee) 45deg";
|
|
||||||
"col.inactive_border" = "rgba(00000000)";
|
|
||||||
|
|
||||||
# Enable resizing windows by clicking and dragging the border
|
|
||||||
resize_on_border = true;
|
|
||||||
|
|
||||||
# REF: https://wiki.hyprland.org/Configuring/Tearing/
|
|
||||||
allow_tearing = false;
|
|
||||||
|
|
||||||
layout = "dwindle";
|
|
||||||
|
|
||||||
snap = {
|
|
||||||
enabled = false;
|
|
||||||
window_gap = 10;
|
|
||||||
monitor_gap = 10;
|
|
||||||
border_overlap = false;
|
|
||||||
# respect_gaps = false;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
decoration = {
|
|
||||||
rounding = 20;
|
|
||||||
rounding_power = 4.0; # Lp norm
|
|
||||||
border_part_of_window = true; # consider border as part of its window
|
|
||||||
# screen_shader = ...; # path to custom GLSL fragment shader
|
|
||||||
|
|
||||||
# window Transparency
|
|
||||||
active_opacity = 1.0;
|
|
||||||
inactive_opacity = 0.95;
|
|
||||||
fullscreen_opacity = 1.0; # fullscreened windows
|
|
||||||
# inactive Window Dimming
|
|
||||||
dim_inactive = false;
|
|
||||||
dim_strength = 0.5;
|
|
||||||
dim_special = 0.2;
|
|
||||||
dim_around = 0.4;
|
|
||||||
|
|
||||||
blur = {
|
|
||||||
enabled = true;
|
|
||||||
new_optimizations = true;
|
|
||||||
xray = false; # floating windows xray through tiling windows
|
|
||||||
ignore_opacity = true;
|
|
||||||
|
|
||||||
# blur Parameters
|
|
||||||
size = 8;
|
|
||||||
passes = 1;
|
|
||||||
noise = 0.0117; # default
|
|
||||||
contrast = 0.8916; # default
|
|
||||||
brightness = 0.8172; # default
|
|
||||||
vibrancy = 0.1696; # default
|
|
||||||
vibrancy_darkness = 0.0; # default
|
|
||||||
|
|
||||||
# blurring For Specific Window Types
|
|
||||||
special = false; # blur special windows
|
|
||||||
popups = false; # blur popups
|
|
||||||
popups_ignorealpha = 0.2;
|
|
||||||
input_methods = false;
|
|
||||||
input_methods_ignorealpha = 0.2;
|
|
||||||
};
|
|
||||||
|
|
||||||
shadow = {
|
|
||||||
enabled = true;
|
|
||||||
ignore_window = true; # only render at edges (not behind)
|
|
||||||
|
|
||||||
range = 3;
|
|
||||||
render_power = 1; # falloff rate
|
|
||||||
sharp = false; # aka infinite shadow.render_power
|
|
||||||
offset = "0 0"; # vec2
|
|
||||||
scale = 1.0;
|
|
||||||
|
|
||||||
color = "rgba(00000000)";
|
|
||||||
color_inactive = "rgba(000000ff)"; # defaults to shadow.color if unset
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
# REF: https://cubic-bezier.com
|
|
||||||
bezier = [
|
|
||||||
"easeOutQuint,0.23,1,0.32,1"
|
|
||||||
"easeInOutCubic,0.65,0.05,0.36,1"
|
|
||||||
"linear,0,0,1,1"
|
|
||||||
"almostLinear,0.5,0.5,0.75,1.0"
|
|
||||||
"quick,0.15,0,0.1,1"
|
|
||||||
];
|
|
||||||
|
|
||||||
# REF: https://wiki.hyprland.org/Configuring/Animations
|
|
||||||
# Animation Declaration Format:
|
|
||||||
# "animation = NAME, ENABLE, SPEED, BEZIER [,STYLE]"
|
|
||||||
# NOTE: SPEED is in ds (where 1ds = 100ms)
|
|
||||||
animations = [
|
|
||||||
"global, 1, 10, default"
|
|
||||||
"border, 1, 5.39, easeOutQuint"
|
|
||||||
|
|
||||||
"windowsIn, 1, 4, linear, slide bottom"
|
|
||||||
"windowsOut, 1, 10, linear, popin"
|
|
||||||
|
|
||||||
"fadeIn, 1, 1.73, almostLinear"
|
|
||||||
"fadeOut, 1, 1.46, almostLinear"
|
|
||||||
"fade, 1, 3.03, quick"
|
|
||||||
|
|
||||||
"layers, 1, 3.81, easeOutQuint"
|
|
||||||
"layersIn, 1, 4, easeOutQuint, fade"
|
|
||||||
"layersOut, 1, 1.5, linear, fade"
|
|
||||||
|
|
||||||
"fadeLayersIn, 1, 1.79, almostLinear"
|
|
||||||
"fadeLayersOut, 1, 1.39, almostLinear"
|
|
||||||
|
|
||||||
"workspaces, 1, 1.94, almostLinear, fade"
|
|
||||||
"workspacesIn, 1, 1.21, almostLinear, fade"
|
|
||||||
"workspacesOut, 1, 1.94, almostLinear, fade"
|
|
||||||
];
|
|
||||||
|
|
||||||
# REF: https://wiki.hyprland.org/Configuring/Dwindle-Layout
|
|
||||||
dwindle = {
|
|
||||||
# master switch for pseudotiling. enabling is bound to MOD + P in the keybinds section below
|
|
||||||
pseudotile = true;
|
|
||||||
preserve_split = true; # You probably want this
|
|
||||||
};
|
|
||||||
|
|
||||||
# REF: https://wiki.hyprland.org/Configuring/Master-Layout
|
|
||||||
master = {
|
|
||||||
new_status = "master";
|
|
||||||
};
|
|
||||||
|
|
||||||
misc = {
|
|
||||||
#force_default_wallpaper = -1; # Set to 0 or 1 to disable the anime mascot wallpapers
|
|
||||||
disable_hyprland_logo = true;
|
|
||||||
disable_splash_rendering = true;
|
|
||||||
|
|
||||||
enable_anr_dialog = false;
|
|
||||||
font_family = "Geist Mono";
|
|
||||||
};
|
|
||||||
|
|
||||||
input = {
|
|
||||||
# kb_layout = "us";
|
|
||||||
# kb_variant =
|
|
||||||
# kb_model =
|
|
||||||
# kb_options =
|
|
||||||
# kb_rules =
|
|
||||||
|
|
||||||
follow_mouse = 1;
|
|
||||||
|
|
||||||
sensitivity = 0; # -1.0 - 1.0, 0 means no modification
|
|
||||||
accel_profile = "flat";
|
|
||||||
force_no_accel = false; # not recommended to turn on
|
|
||||||
|
|
||||||
repeat_rate = 50;
|
|
||||||
repeat_delay = 300;
|
|
||||||
|
|
||||||
touchpad = {
|
|
||||||
natural_scroll = hostname == "lolcathost";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
cursor.no_hardware_cursors = true;
|
|
||||||
|
|
||||||
# standard keypress bindings
|
|
||||||
bind = [
|
|
||||||
# terminal commands
|
|
||||||
"$MOD, RETURN, exec, $terminal"
|
|
||||||
"$MOD SHIFT, RETURN, exec, $terminal -D `[ -f ~/cry/.projdir ] && cat ~/cry/.projdir || echo ~`"
|
|
||||||
|
|
||||||
# btop
|
|
||||||
"$MOD, P, exec, bash -c \"{ hyprctl clients | rg '^\w*title: btop' &>/dev/null; } && hyprctl dispatch closewindow title:btop || $terminal -T btop btop & disown\""
|
|
||||||
|
|
||||||
"$MOD, R, exec, $menu"
|
|
||||||
|
|
||||||
# lock mouse to window (mostly, for gaming)
|
|
||||||
"$MOD, F1, exec, pkill hyprland-cursor || $cursorLock"
|
|
||||||
"$MOD, F2, exec, $colorpicker"
|
|
||||||
|
|
||||||
# screenshots
|
|
||||||
"$MOD, S, exec, $screenshot_region"
|
|
||||||
"$MOD SHIFT, S, exec, $screenshot_window"
|
|
||||||
|
|
||||||
"$MOD, F, fullscreen"
|
|
||||||
"$MOD SHIFT, F, fullscreenstate, 0 3" # fakefullscreen
|
|
||||||
"$MOD, C, killactive"
|
|
||||||
"$MOD SHIFT, Delete, exit"
|
|
||||||
|
|
||||||
# switch window
|
|
||||||
"$MOD, left, movefocus, l"
|
|
||||||
"$MOD, right, movefocus, r"
|
|
||||||
"$MOD, up, movefocus, u"
|
|
||||||
"$MOD, down, movefocus, d"
|
|
||||||
"$MOD, H, movefocus, l"
|
|
||||||
"$MOD, J, movefocus, d"
|
|
||||||
"$MOD, K, movefocus, u"
|
|
||||||
"$MOD, L, movefocus, r"
|
|
||||||
|
|
||||||
# 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 SHIFT, left, workspace, e-1"
|
|
||||||
"$MOD SHIFT, right, workspace, e+1"
|
|
||||||
|
|
||||||
# move 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"
|
|
||||||
|
|
||||||
# move workspace to monitor
|
|
||||||
"$MOD TAB, 1, movecurrentworkspacetomonitor, DP-2"
|
|
||||||
"$MOD TAB, 2, movecurrentworkspacetomonitor, HDMA-A-1"
|
|
||||||
];
|
|
||||||
|
|
||||||
# bindings for mouse
|
|
||||||
bindm = [
|
|
||||||
"$MOD, mouse:272, movewindow"
|
|
||||||
"$MOD, mouse:273, resizewindow"
|
|
||||||
];
|
|
||||||
|
|
||||||
# bindings that work even while screen is locked
|
|
||||||
bindl = [
|
|
||||||
# WARNING: requires `pkgs.playerctl`
|
|
||||||
", XF86AudioNext, exec, playerctl next"
|
|
||||||
", XF86AudioPause, exec, playerctl play-pause"
|
|
||||||
", XF86AudioPlay, exec, playerctl play-pause"
|
|
||||||
", XF86AudioPrev, exec, playerctl previous"
|
|
||||||
];
|
|
||||||
|
|
||||||
# bindings that work even while screen is locked
|
|
||||||
# and also repeat when the key is held
|
|
||||||
bindel = [
|
|
||||||
",XF86AudioRaiseVolume, exec, wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%+"
|
|
||||||
",XF86AudioLowerVolume, exec, wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%-"
|
|
||||||
",XF86AudioMute, exec, wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle"
|
|
||||||
",XF86AudioMicMute, exec, wpctl set-mute @DEFAULT_AUDIO_SOURCE@ toggle"
|
|
||||||
",XF86MonBrightnessUp, exec, brightnessctl s 10%+"
|
|
||||||
",XF86MonBrightnessDown, exec, brightnessctl s 10%-"
|
|
||||||
];
|
|
||||||
|
|
||||||
windowrule = [
|
|
||||||
# btop process manager
|
|
||||||
{
|
|
||||||
name = "terminal-manager";
|
|
||||||
"match:class" = "^(foot)$";
|
|
||||||
"match:title" = "^(btop)$";
|
|
||||||
float = true;
|
|
||||||
center = true;
|
|
||||||
size = "(monitor_w*0.65) (monitor_h*0.65)";
|
|
||||||
}
|
|
||||||
|
|
||||||
# ignore maximize requests from apps
|
|
||||||
{
|
|
||||||
name = "suppress-maximize";
|
|
||||||
suppress_event = "maximize";
|
|
||||||
"match:class" = ".*";
|
|
||||||
}
|
|
||||||
|
|
||||||
# fix some dragging issues with XWayland
|
|
||||||
{
|
|
||||||
name = "no-focus";
|
|
||||||
no_focus = "on";
|
|
||||||
"match:class" = "^$";
|
|
||||||
"match:title" = "^$";
|
|
||||||
"match:xwayland" = true;
|
|
||||||
"match:float" = true;
|
|
||||||
"match:fullscreen" = false;
|
|
||||||
"match:pin" = false;
|
|
||||||
}
|
|
||||||
|
|
||||||
# TODO: style fakefullscreen windows to clearly indicate their difference
|
|
||||||
# {
|
|
||||||
# name = "fake-fullscreen";
|
|
||||||
# }
|
|
||||||
];
|
|
||||||
|
|
||||||
# █▀▀ █▄░█ █░█ █░█ ▄▀█ █▀█
|
|
||||||
# ██▄ █░▀█ ▀▄▀ ▀▄▀ █▀█ █▀▄
|
|
||||||
env = [
|
|
||||||
"XCURSOR_THEME,Bibata-Modern-Ice"
|
|
||||||
"XCURSOR_SIZE,16"
|
|
||||||
"HYPRCURSOR_THEME,Bibata-Modern-Ice"
|
|
||||||
"HYPRCURSOR_SIZE,16"
|
|
||||||
|
|
||||||
"QT_QPA_PLATFORM,wayland"
|
|
||||||
"QT_QPA_PLATFORMTHEME,xdgdesktopportal" # makes portals work correctly
|
|
||||||
"XDG_MENU_PREFIX,arch-"
|
|
||||||
"XDG_CURRENT_DESKTOP,Hyprland"
|
|
||||||
];
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
||||||
183
homes/modules/wofi.nix
Executable file
183
homes/modules/wofi.nix
Executable file
|
|
@ -0,0 +1,183 @@
|
||||||
|
{
|
||||||
|
lib,
|
||||||
|
config,
|
||||||
|
pkgs,
|
||||||
|
...
|
||||||
|
}: {
|
||||||
|
programs.wofi = {
|
||||||
|
enable = true;
|
||||||
|
settings = {
|
||||||
|
location = "center";
|
||||||
|
allow_markup = true;
|
||||||
|
width = 250;
|
||||||
|
};
|
||||||
|
# Force the style to stop Stylix being a bitch and overwriting it
|
||||||
|
style = lib.mkForce ''
|
||||||
|
@define-color rosewater #f2d5cf;
|
||||||
|
@define-color rosewater-rgb rgb(242, 213, 207);
|
||||||
|
@define-color flamingo #eebebe;
|
||||||
|
@define-color flamingo-rgb rgb(238, 190, 190);
|
||||||
|
@define-color pink #f4b8e4;
|
||||||
|
@define-color pink-rgb rgb(244, 184, 228);
|
||||||
|
@define-color mauve #ca9ee6;
|
||||||
|
@define-color mauve-rgb rgb(202, 158, 230);
|
||||||
|
@define-color red #e78284;
|
||||||
|
@define-color red-rgb rgb(231, 130, 132);
|
||||||
|
@define-color maroon #ea999c;
|
||||||
|
@define-color maroon-rgb rgb(234, 153, 156);
|
||||||
|
@define-color peach #ef9f76;
|
||||||
|
@define-color peach-rgb rgb(239, 159, 118);
|
||||||
|
@define-color yellow #e5c890;
|
||||||
|
@define-color yellow-rgb rgb(229, 200, 144);
|
||||||
|
@define-color green #a6d189;
|
||||||
|
@define-color green-rgb rgb(166, 209, 137);
|
||||||
|
@define-color teal #81c8be;
|
||||||
|
@define-color teal-rgb rgb(129, 200, 190);
|
||||||
|
@define-color sky #99d1db;
|
||||||
|
@define-color sky-rgb rgb(153, 209, 219);
|
||||||
|
@define-color sapphire #85c1dc;
|
||||||
|
@define-color sapphire-rgb rgb(133, 193, 220);
|
||||||
|
@define-color blue #8caaee;
|
||||||
|
@define-color blue-rgb rgb(140, 170, 238);
|
||||||
|
@define-color lavender #babbf1;
|
||||||
|
@define-color lavender-rgb rgb(186, 187, 241);
|
||||||
|
@define-color text #c6d0f5;
|
||||||
|
@define-color text-rgb rgb(198, 208, 245);
|
||||||
|
@define-color subtext1 #b5bfe2;
|
||||||
|
@define-color subtext1-rgb rgb(181, 191, 226);
|
||||||
|
@define-color subtext0 #a5adce;
|
||||||
|
@define-color subtext0-rgb rgb(165, 173, 206);
|
||||||
|
@define-color overlay2 #949cbb;
|
||||||
|
@define-color overlay2-rgb rgb(148, 156, 187);
|
||||||
|
@define-color overlay1 #838ba7;
|
||||||
|
@define-color overlay1-rgb rgb(131, 139, 167);
|
||||||
|
@define-color overlay0 #737994;
|
||||||
|
@define-color overlay0-rgb rgb(115, 121, 148);
|
||||||
|
@define-color surface2 #626880;
|
||||||
|
@define-color surface2-rgb rgb(98, 104, 128);
|
||||||
|
@define-color surface1 #51576d;
|
||||||
|
@define-color surface1-rgb rgb(81, 87, 109);
|
||||||
|
@define-color surface0 #414559;
|
||||||
|
@define-color surface0-rgb rgb(65, 69, 89);
|
||||||
|
@define-color base #303446;
|
||||||
|
@define-color base-rgb rgb(48, 52, 70);
|
||||||
|
@define-color mantle #292c3c;
|
||||||
|
@define-color mantle-rgb rgb(41, 44, 60);
|
||||||
|
@define-color crust #232634;
|
||||||
|
@define-color crust-rgb rgb(35, 38, 52);
|
||||||
|
|
||||||
|
* {
|
||||||
|
font-family: 'FiraCode Nerd Font';
|
||||||
|
font-size: 16px;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Window */
|
||||||
|
window {
|
||||||
|
margin: 0px;
|
||||||
|
padding: 10px;
|
||||||
|
border: 0.16em solid @teal;
|
||||||
|
border-radius: 0.5em;
|
||||||
|
background-color: @base;
|
||||||
|
animation: slideIn 0.25s ease-in-out both;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Slide In */
|
||||||
|
@keyframes slideIn {
|
||||||
|
0% {
|
||||||
|
opacity: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
100% {
|
||||||
|
opacity: 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Inner Box */
|
||||||
|
#inner-box {
|
||||||
|
margin: 5px;
|
||||||
|
padding: 10px;
|
||||||
|
border: none;
|
||||||
|
background-color: @base;
|
||||||
|
/*animation: fadeIn 0.5s ease-in-out both;*/
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Fade In */
|
||||||
|
@keyframes fadeIn {
|
||||||
|
0% {
|
||||||
|
opacity: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
100% {
|
||||||
|
opacity: 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Outer Box */
|
||||||
|
#outer-box {
|
||||||
|
margin: 5px;
|
||||||
|
padding: 10px;
|
||||||
|
border: none;
|
||||||
|
background-color: @base;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Scroll */
|
||||||
|
#scroll {
|
||||||
|
margin: 0px;
|
||||||
|
padding: 10px;
|
||||||
|
border: none;
|
||||||
|
background-color: @base;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Input */
|
||||||
|
#input {
|
||||||
|
margin: 5px 20px;
|
||||||
|
padding: 10px;
|
||||||
|
border: none;
|
||||||
|
border-radius: 0.25em;
|
||||||
|
color: @text;
|
||||||
|
background-color: @base;
|
||||||
|
animation: fadeIn 0.25s ease-in-out both;
|
||||||
|
}
|
||||||
|
|
||||||
|
#input image {
|
||||||
|
border: none;
|
||||||
|
color: @red;
|
||||||
|
}
|
||||||
|
|
||||||
|
#input * {
|
||||||
|
outline: 4px solid @red!important;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Text */
|
||||||
|
#text {
|
||||||
|
margin: 5px;
|
||||||
|
border: none;
|
||||||
|
color: @text;
|
||||||
|
animation: fadeIn 0.5s ease-in-out both;
|
||||||
|
}
|
||||||
|
|
||||||
|
#entry {
|
||||||
|
background-color: @base;
|
||||||
|
}
|
||||||
|
|
||||||
|
#entry arrow {
|
||||||
|
border: none;
|
||||||
|
color: @teal;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Selected Entry */
|
||||||
|
#entry:selected {
|
||||||
|
border: 0.10em solid @teal;
|
||||||
|
border-radius: 0.25em;
|
||||||
|
}
|
||||||
|
|
||||||
|
#entry:selected #text {
|
||||||
|
color: @teal;
|
||||||
|
}
|
||||||
|
|
||||||
|
#entry:drop(active) {
|
||||||
|
background-color: @lavender!important;
|
||||||
|
}
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
@ -97,9 +97,9 @@ in {
|
||||||
THEMES = "forgejo-auto,forgejo-light,forgejo-dark";
|
THEMES = "forgejo-auto,forgejo-light,forgejo-dark";
|
||||||
};
|
};
|
||||||
"ui.meta" = {
|
"ui.meta" = {
|
||||||
AUTHOR = "_cry64";
|
AUTHOR = "Emile Clark-Boman - emileclarkb";
|
||||||
DESCRIPTION = "This is my personal self-hosted git forge, where I keep and maintain personal projects! PS do butterflies cry when they're sad?";
|
DESCRIPTION = "This is my personal self-hosted git forge, where I keep and maintain personal projects! PS do butterflies cry when they're sad?";
|
||||||
KEYWORDS = "emile,clark,boman,clarkboman,emileclarkb,cry,_cry64,cry64,dobutterfliescry,butterfly,butterflies,git,forge,forgejo,self-hosted,tearforge";
|
KEYWORDS = "emile,clark,boman,clarkboman,emileclarkb,git,forge,forgejo,self-hosted,dobutterfliescry,butterfly,butterflies,cry,tearforge";
|
||||||
};
|
};
|
||||||
|
|
||||||
markdown = {
|
markdown = {
|
||||||
|
|
|
||||||
|
|
@ -24,8 +24,8 @@
|
||||||
|
|
||||||
# NOTE: generate hashes with `mkpasswd -sm bcrypt`
|
# NOTE: generate hashes with `mkpasswd -sm bcrypt`
|
||||||
loginAccounts = {
|
loginAccounts = {
|
||||||
"them@dobutterfliescry.net" = {
|
"me@imbored.dev" = {
|
||||||
aliases = ["cry@dobutterfliescry.net"];
|
aliases = ["emile@imbored.dev"];
|
||||||
hashedPasswordFile = let
|
hashedPasswordFile = let
|
||||||
CWD = builtins.getEnv "PWD";
|
CWD = builtins.getEnv "PWD";
|
||||||
# XXX: TODO: use a secrets manager!
|
# XXX: TODO: use a secrets manager!
|
||||||
|
|
|
||||||
|
|
@ -1,9 +1,4 @@
|
||||||
{
|
{...}: {
|
||||||
root,
|
|
||||||
config,
|
|
||||||
pkgs,
|
|
||||||
...
|
|
||||||
}: {
|
|
||||||
imports = [
|
imports = [
|
||||||
./hardware.nix
|
./hardware.nix
|
||||||
];
|
];
|
||||||
|
|
@ -22,38 +17,6 @@
|
||||||
libinput.enable = true;
|
libinput.enable = true;
|
||||||
};
|
};
|
||||||
|
|
||||||
# users = {
|
|
||||||
# users = {
|
|
||||||
# # literally me fr (personal account)
|
|
||||||
# ilovecry = {
|
|
||||||
# isNormalUser = true;
|
|
||||||
# extraGroups = ["wheel"];
|
|
||||||
# shell = pkgs.bash;
|
|
||||||
# # hashedPasswordFile = config.sops.secrets.ilovecryPassword.path;
|
|
||||||
# };
|
|
||||||
# };
|
|
||||||
# };
|
|
||||||
|
|
||||||
# sops = {
|
|
||||||
# defaultSopsFile = /${root}/secrets/user.yaml;
|
|
||||||
# # age.sshKeyPaths = ["/etc/ssh/ssh_host_ed25519_key"];
|
|
||||||
# secrets = {
|
|
||||||
# "hashedPassword" = {
|
|
||||||
# neededForUsers = true;
|
|
||||||
# };
|
|
||||||
# "ilovecryPassword" = {
|
|
||||||
# neededForUsers = true;
|
|
||||||
# };
|
|
||||||
# # "gitlab/oauth_token" = {};
|
|
||||||
# # "tailscale/authkey" = {};
|
|
||||||
# # "guest_accounts.json" = {};
|
|
||||||
# # "npmrc" = {
|
|
||||||
# # owner = "youruser";
|
|
||||||
# # path = "/home/youruser/.npmrc";
|
|
||||||
# # };
|
|
||||||
# };
|
|
||||||
# };
|
|
||||||
|
|
||||||
# DO NOT MODIFY
|
# DO NOT MODIFY
|
||||||
system.stateVersion = "24.05"; # Did you read the comment?
|
system.stateVersion = "24.05"; # Did you read the comment?
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -19,6 +19,7 @@
|
||||||
|
|
||||||
users.users.cry = {
|
users.users.cry = {
|
||||||
openssh.authorizedKeys.keys = [
|
openssh.authorizedKeys.keys = [
|
||||||
|
"ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQDYwbPjW26fHivB+UpxRArY7nFI09VLAD9xxOiPk/u+YPAOVR8SYTpsHj3L8kI3ENRtt3PRJb97ZfLpPaAJ0LJiZv4qzisDjbfck12FxSDseQlF2JaJZ4wrJ9llcqJbRLKd5wV4KotrDm8Ct2JSBFOdTBQBGJqtNrLOcAtDqVmDPXsWyONINegtcYHumTbJcQU1ksCABdjW5R1dhJesOuMOM8EvrUtDyftvD7sgnBlXTzybP9c1AphUuBMSR5yEz/cDl+iPtQq7tgB+iepCCuNMGQu1wZFPBCMrZtMoxq6gzmZ4oV+W6tfmGEbtdkY+ix+2j960Zngcw7Gj+aYyMY2TyVJuJmIvlzfcrlsbr1TH35Y/5oYhJA+X6aFpgomUsurJ6/QdI1wQ+ceUCnZEeg/8z+WNaq/Bp2hPzT9Y7SPWolpaotDhh9wiuyVqn5VQqwL2lELfvZM4Lu8l6vRPDeMZTemI1nc5jg3aVpJqZTPqFVcCWrWXfdCFwnfy/SdU0JAprCzVvoqkwDHsJwkxY/NcxlNGNha+8oYZgSH1CZhEp3Z7CDJCTDd5PxxCQHs90ENCWFsoGQIV01dAgwD63460En9q2kGr6gO2aRewMD5Vr8AzeGV87vsR3ARpPQVzEWLX08B076Idjwrz8aebdRYBEg7WCxRe5UVI1i/V8j/zQw== emile@deadlyserver.com"
|
||||||
"ecdsa-sha2-nistp521 AAAAE2VjZHNhLXNoYTItbmlzdHA1MjEAAAAIbmlzdHA1MjEAAACFBAGEvtRs3C4hjSuvVm2lukqOvObCz5gVlFthcvpGHAqlBgZo47CNJM78WoviEQWceqtu9ZzJdRJ7qEK9ZGvTM0XTSgExkOs6YdS3J7M3i3YS1vcj9KVPinLhiE90aED/319pbYKFrRs/lRzl8XLeaPNqenNMNJBqeary8+r5u9JC6zYCeQ== me@lolcathost"
|
"ecdsa-sha2-nistp521 AAAAE2VjZHNhLXNoYTItbmlzdHA1MjEAAAAIbmlzdHA1MjEAAACFBAGEvtRs3C4hjSuvVm2lukqOvObCz5gVlFthcvpGHAqlBgZo47CNJM78WoviEQWceqtu9ZzJdRJ7qEK9ZGvTM0XTSgExkOs6YdS3J7M3i3YS1vcj9KVPinLhiE90aED/319pbYKFrRs/lRzl8XLeaPNqenNMNJBqeary8+r5u9JC6zYCeQ== me@lolcathost"
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
|
|
|
||||||
|
|
@ -36,6 +36,7 @@
|
||||||
meta = {
|
meta = {
|
||||||
homepage = "https://github.com/unoplatform/uno.check";
|
homepage = "https://github.com/unoplatform/uno.check";
|
||||||
license = licenses.mit;
|
license = licenses.mit;
|
||||||
|
maintainers = [maintainers.emileclarkb];
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
|
||||||
|
|
@ -10,20 +10,6 @@
|
||||||
lib
|
lib
|
||||||
;
|
;
|
||||||
in {
|
in {
|
||||||
ns = pkgs.writeShellApplication {
|
|
||||||
name = "ns";
|
|
||||||
runtimeInputs = with pkgs; [
|
|
||||||
fzf
|
|
||||||
nix-search-tv
|
|
||||||
];
|
|
||||||
text = builtins.readFile "${pkgs.nix-search-tv.src}/nixpkgs.sh";
|
|
||||||
|
|
||||||
excludeShellChecks = [
|
|
||||||
# SC2016 (info): Expressions don't expand in single quotes, use double quotes for that.
|
|
||||||
"SC2016"
|
|
||||||
];
|
|
||||||
};
|
|
||||||
|
|
||||||
angry-oxide = import ../packages/angryoxide {
|
angry-oxide = import ../packages/angryoxide {
|
||||||
inherit pkgs lib;
|
inherit pkgs lib;
|
||||||
};
|
};
|
||||||
|
|
@ -66,7 +52,7 @@
|
||||||
lib.mkIf (inputs?hyprland)
|
lib.mkIf (inputs?hyprland)
|
||||||
(inputs.hyprland.packages.${system}.hyprland.overrideAttrs (final: prev: {
|
(inputs.hyprland.packages.${system}.hyprland.overrideAttrs (final: prev: {
|
||||||
patches = let
|
patches = let
|
||||||
glaze_version = inputs.hyprland.inputs.nixpkgs.legacyPackages.glaze.version;
|
glaze_version = pkgs.glaze.version;
|
||||||
in
|
in
|
||||||
prev.patches
|
prev.patches
|
||||||
++ [
|
++ [
|
||||||
|
|
|
||||||
|
|
@ -10,6 +10,7 @@
|
||||||
angryoxide-meta = {
|
angryoxide-meta = {
|
||||||
homepage = "https://github.com/${angryoxide-owner}/${angryoxide-pname}";
|
homepage = "https://github.com/${angryoxide-owner}/${angryoxide-pname}";
|
||||||
license = lib.licenses.gpl3;
|
license = lib.licenses.gpl3;
|
||||||
|
maintainers = [lib.maintainers.emileclarkb];
|
||||||
};
|
};
|
||||||
|
|
||||||
# "Vendored LibWifi used in AngryOxide"
|
# "Vendored LibWifi used in AngryOxide"
|
||||||
|
|
@ -65,7 +66,7 @@
|
||||||
|
|
||||||
meta =
|
meta =
|
||||||
{
|
{
|
||||||
description = "AngryOxide's source files isolated by @_cry64 into a separate Nix derivation.";
|
description = "AngryOxide's source files isolated by (@emileclarkb) into a separate Nix derivation.";
|
||||||
}
|
}
|
||||||
// angryoxide-meta;
|
// angryoxide-meta;
|
||||||
};
|
};
|
||||||
|
|
|
||||||
|
|
@ -463,6 +463,7 @@ rec {
|
||||||
description = "A GUI for the Chameleon Ultra written in Flutter for crossplatform";
|
description = "A GUI for the Chameleon Ultra written in Flutter for crossplatform";
|
||||||
homepage = "https://github.com/GameTec-live/ChameleonUltraGUI";
|
homepage = "https://github.com/GameTec-live/ChameleonUltraGUI";
|
||||||
license = licenses.gpl3;
|
license = licenses.gpl3;
|
||||||
|
maintainers = [maintainers.emileclarkb];
|
||||||
platforms = platforms.linux;
|
platforms = platforms.linux;
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -20,5 +20,6 @@ in
|
||||||
description = "A lightweight, fast, terminal-based markdown research tool inspired by Obsidian";
|
description = "A lightweight, fast, terminal-based markdown research tool inspired by Obsidian";
|
||||||
homepage = "https://github.com/hanebox/ekphos";
|
homepage = "https://github.com/hanebox/ekphos";
|
||||||
license = lib.licenses.mit;
|
license = lib.licenses.mit;
|
||||||
|
maintainers = [lib.maintainers.emileclarkb];
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
||||||
11
patches
Normal file
11
patches
Normal file
|
|
@ -0,0 +1,11 @@
|
||||||
|
# add sddm profile pic
|
||||||
|
systemd.tmpfiles.rules = let
|
||||||
|
imagePath = /${root}/homes/aurora/profile.png;
|
||||||
|
in
|
||||||
|
lib.mkIf (builtins.pathExists imagePath) [
|
||||||
|
"L /var/lib/AccountsService/icons/${config.home.username} - - - - ${imagePath}"
|
||||||
|
];
|
||||||
|
|
||||||
|
|
||||||
|
# Cerulean should automatically add set home-managers `home.username` and `home.homeDirectory`
|
||||||
|
# (this can be done by using .extendModule from the nixos module system :3)
|
||||||
|
|
@ -1,19 +0,0 @@
|
||||||
hashedPassword: ENC[AES256_GCM,data:yUPHY0xg91BNSOkF5PcBkZyacJO7W6OvTE4o8X83i/386D1V/jnRfOpgNZ5FvAwdyA2SNPaeW1gIyLmYbbQGXVLvOPNeRL1Aog==,iv:fz177ve/GlW27NR1CzPGlhWGSM3yaIvN8daEF9xLsM0=,tag:Qv9lXYhj/I6jVzhi7WtuLg==,type:str]
|
|
||||||
ilovecryPassword: ENC[AES256_GCM,data:3c1ljqAdtiCz8csYW4GJjJUsFpxwh+mjBBWRS7RUg81SC0bdmuSYjKfBFuTu6ML0ZL1p8DXk2elUwV3fMa4RuBami5tIXh7bpw==,iv:eJokDF2GYazbHtlFUjjnK4wsdM1vbn629xkZNSaTdFA=,tag:5mWfg/HoSsnQ+9gX8p26rw==,type:str]
|
|
||||||
sops:
|
|
||||||
lastmodified: "2026-03-08T01:44:57Z"
|
|
||||||
mac: ENC[AES256_GCM,data:geIyLVMcLvGp0/9Yz23/ijZy3oVq1FXVJHobovomCj1oFxSqdsds/w+w/TBmXJ30fvfdXpLULnr6AwwNxSYuNTfm3tXR+EBq0tg1bagbpk6SABOq0TNFRkdfJVyyeVTl/mxBaeHVnPcrV3O50LGGVKdcHkeUFlhuaAqXmYxsq+U=,iv:SvR4yTi1UoSMJldS4NuhGbkNHjdKOo5dw9XhfSsItF8=,tag:AHWXHFVUQkqgJ+KhIuqZEg==,type:str]
|
|
||||||
pgp:
|
|
||||||
- created_at: "2026-03-08T01:32:54Z"
|
|
||||||
enc: |-
|
|
||||||
-----BEGIN PGP MESSAGE-----
|
|
||||||
|
|
||||||
hF4DuHhvXXGIWHkSAQdAh2Khre0KhjaZPgN4PxO2zm31TkUguTW9OdmCDHyQvAww
|
|
||||||
dON+Q1s0jOh2hEMmEOF5MJcJnAXHXix8WiSsNTpqnZSS0or3QNH8fUUBCgR3t73r
|
|
||||||
0l4BTv46Cj7+PrpUG4l8BbhYWfiu7N0vex4NbpCfyHKTMDLiFSEf9U4BOzkmNkGs
|
|
||||||
mB+Hw58WwIaru5JueFztwvflE5ysxb9Wk/1PZ6zTpmiq6Rm+WgYydb5vq699DEKC
|
|
||||||
=oQCe
|
|
||||||
-----END PGP MESSAGE-----
|
|
||||||
fp: 9D052B0EEB1CC3283E3E320FF68745A836CA0412
|
|
||||||
unencrypted_suffix: _unencrypted
|
|
||||||
version: 3.11.0
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue