From d5e36b8df8c5eb363a6f037144287c6c50ef34a0 Mon Sep 17 00:00:00 2001 From: Emile Clark-Boman Date: Sun, 8 Feb 2026 18:56:06 +1000 Subject: [PATCH] im lazy --- flake.lock | 132 +++++++++++----- flake.nix | 10 +- homes/modules/fish.nix | 28 +++- homes/modules/nixcord.nix | 248 +++++++++++++++++++++++++++++- hosts/hyrule/default.nix | 48 +++--- hosts/hyrule/services/forgejo.nix | 4 +- hosts/hyrule/services/nginx.nix | 1 + hosts/lolcathost/default.nix | 7 + hosts/modules/discord/nixcord.nix | 29 ---- overlays/default.nix | 10 ++ packages/ekphos.nix | 29 ++++ 11 files changed, 441 insertions(+), 105 deletions(-) mode change 100755 => 100644 homes/modules/nixcord.nix delete mode 100755 hosts/modules/discord/nixcord.nix create mode 100644 overlays/default.nix create mode 100644 packages/ekphos.nix diff --git a/flake.lock b/flake.lock index 3cf7a06..b10be59 100644 --- a/flake.lock +++ b/flake.lock @@ -40,11 +40,11 @@ ] }, "locked": { - "lastModified": 1770121583, - "narHash": "sha256-BI9UgaWtIHqyV8L4Vfh5Vrakax65QOG6m0a28L05YzM=", + "lastModified": 1770316708, + "narHash": "sha256-i9oEi2PUIZfp+73ZvQE/Ze0aCEV3y3+vvaJ/ZmAe3bw=", "ref": "refs/heads/main", - "rev": "d511138e76f03990da593d1d0129f58c1ec3f570", - "revCount": 100, + "rev": "955746af205e2a94a8e0798a911941da9c5af779", + "revCount": 117, "type": "git", "url": "https://forge.dobutterfliescry.net/cry/site" }, @@ -69,6 +69,38 @@ "type": "github" } }, + "flake-compat_2": { + "locked": { + "lastModified": 1733328505, + "narHash": "sha256-NeCCThCEP3eCl2l/+27kNNK7QrwZB1IJCrXfrbv5oqU=", + "rev": "ff81ac966bb2cae68946d5ed5fc4994f96d0ffec", + "revCount": 69, + "type": "tarball", + "url": "https://api.flakehub.com/f/pinned/edolstra/flake-compat/1.1.0/01948eb7-9cba-704f-bbf3-3fa956735b52/source.tar.gz" + }, + "original": { + "type": "tarball", + "url": "https://flakehub.com/f/edolstra/flake-compat/1.tar.gz" + } + }, + "flake-parts": { + "inputs": { + "nixpkgs-lib": "nixpkgs-lib" + }, + "locked": { + "lastModified": 1768135262, + "narHash": "sha256-PVvu7OqHBGWN16zSi6tEmPwwHQ4rLPU9Plvs8/1TUBY=", + "owner": "hercules-ci", + "repo": "flake-parts", + "rev": "80daad04eddbbf5a4d883996a73f3f542fa437ac", + "type": "github" + }, + "original": { + "owner": "hercules-ci", + "repo": "flake-parts", + "type": "github" + } + }, "flake-utils": { "inputs": { "systems": "systems" @@ -88,7 +120,9 @@ }, "grub2-themes": { "inputs": { - "nixpkgs": "nixpkgs" + "nixpkgs": [ + "nixpkgs" + ] }, "locked": { "lastModified": 1757136219, @@ -125,39 +159,29 @@ "type": "github" } }, + "nixcord": { + "inputs": { + "flake-compat": "flake-compat_2", + "flake-parts": "flake-parts", + "nixpkgs": [ + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1770365342, + "narHash": "sha256-jV5tAs67HSBWz/ePEp1eyoUK3Lqfc1fEAvt2wC6reFc=", + "owner": "FlameFlag", + "repo": "nixcord", + "rev": "51db830336715209a4a213aa985f4d405ff0be69", + "type": "github" + }, + "original": { + "owner": "FlameFlag", + "repo": "nixcord", + "type": "github" + } + }, "nixpkgs": { - "locked": { - "lastModified": 1761269590, - "narHash": "sha256-yTr+PCi4wGbOEidrm8XyXBobLxLMqIBsbUyhwsN6wrc=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "d792a6e0cd4ba35c90ea787b717d72410f56dc40", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "master", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-unstable": { - "locked": { - "lastModified": 1761114652, - "narHash": "sha256-f/QCJM/YhrV/lavyCVz8iU3rlZun6d+dAiC3H+CDle4=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "01f116e4df6a15f4ccdffb1bcd41096869fb385c", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixos-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_2": { "locked": { "lastModified": 1761016216, "narHash": "sha256-G/iC4t/9j/52i/nm+0/4ybBmAF4hzR8CNHC75qEhjHo=", @@ -173,12 +197,44 @@ "type": "github" } }, + "nixpkgs-lib": { + "locked": { + "lastModified": 1765674936, + "narHash": "sha256-k00uTP4JNfmejrCLJOwdObYC9jHRrr/5M/a/8L2EIdo=", + "owner": "nix-community", + "repo": "nixpkgs.lib", + "rev": "2075416fcb47225d9b68ac469a5c4801a9c4dd85", + "type": "github" + }, + "original": { + "owner": "nix-community", + "repo": "nixpkgs.lib", + "type": "github" + } + }, + "nixpkgs-unstable": { + "locked": { + "lastModified": 1770197578, + "narHash": "sha256-AYqlWrX09+HvGs8zM6ebZ1pwUqjkfpnv8mewYwAo+iM=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "00c21e4c93d963c50d4c0c89bfa84ed6e0694df2", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, "root": { "inputs": { "colmena": "colmena", "dobutterfliescry-net": "dobutterfliescry-net", "grub2-themes": "grub2-themes", - "nixpkgs": "nixpkgs_2", + "nixcord": "nixcord", + "nixpkgs": "nixpkgs", "nixpkgs-unstable": "nixpkgs-unstable", "systems": "systems_2" } diff --git a/flake.nix b/flake.nix index b6d5a67..2df01c1 100644 --- a/flake.nix +++ b/flake.nix @@ -16,7 +16,15 @@ }; }; - grub2-themes.url = "github:vinceliuice/grub2-themes"; + grub2-themes = { + url = "github:vinceliuice/grub2-themes"; + inputs.nixpkgs.follows = "nixpkgs"; + }; + + nixcord = { + url = "github:FlameFlag/nixcord"; + inputs.nixpkgs.follows = "nixpkgs"; + }; dobutterfliescry-net = { url = "git+https://forge.dobutterfliescry.net/cry/site"; diff --git a/homes/modules/fish.nix b/homes/modules/fish.nix index 801fa0f..69d82f3 100755 --- a/homes/modules/fish.nix +++ b/homes/modules/fish.nix @@ -20,18 +20,34 @@ # completions.enable = true; # }; - interactiveShellInit = '' + 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..." + + "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!" + ] + |> 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 weary "Welcome weary traveller to my shop" - set alone "It's dangerous to go alone! Take this." - set sad "Do butterflies cry when they're sad?" - set alice "I think Alice is lost..." - set greetings "$weary" "$alone" "$sad" "$alice" + set greetings ${greetings} echo -n $greetings[(random 1 (count $greetings))] end diff --git a/homes/modules/nixcord.nix b/homes/modules/nixcord.nix old mode 100755 new mode 100644 index a006c0e..97e6b15 --- a/homes/modules/nixcord.nix +++ b/homes/modules/nixcord.nix @@ -1,16 +1,248 @@ -{ - config, - pkgs, - ... -}: { +{inputs, ...}: { + imports = [ + inputs.nixcord.homeModules.nixcord + ]; + programs.nixcord = { enable = true; + equibop.enable = true; + + discord = { + vencord.enable = false; + equicord.enable = true; + }; + config = { - frameless = true; + enabledThemes = [ + # "aurorastheme.css" + # "base16-colors.css" + ]; plugins = { - # TODO: remove this plugin - hideAttachments.enable = true; + anonymiseFileNames = { + enable = true; + anonymiseByDefault = true; + method = 0; + randomisedLength = 16; + }; + betterSessions = { + backgroundCheck = true; + checkInterval = 1; + }; + biggerStreamPreview.enable = true; + callTimer.enable = true; + fixYoutubeEmbeds.enable = true; + fixSpotifyEmbeds.enable = true; + tidalEmbeds.enable = true; + youtubeAdblock.enable = true; + followVoiceUser.enable = true; + friendsSince.enable = true; + ircColors = { + enable = true; + lightness = 80; + memberListColors = true; + applyColorOnlyInDms = false; + applyColorOnlyToUsersWithoutColor = false; + }; + messageLogger = { + enable = true; + showEditDiffs = true; + separatedDiffs = false; + }; + # fakeNitro.enable = true; + ghosted.enable = true; + noF1.enable = true; + noMaskedUrlPaste.enable = true; + messageLatency = { + enable = false; + latency = -1; + showMillis = true; + }; + openInApp.enable = true; + crashHandler.enable = true; + disableCallIdle.enable = true; + experiments.enable = true; + expressionCloner.enable = true; + favoriteGifSearch.enable = true; + fixImagesQuality.enable = true; + forceOwnerCrown.enable = true; + forwardAnywhere.enable = true; + spotifyCrack.enable = true; + spotifyShareCommands.enable = true; + spotifyControls.enable = true; + fullUserInChatbox.enable = true; + gifPaste.enable = true; + ignoreActivities = { + enable = true; + ignorePlaying = true; + ignoreStreaming = true; + ignoreListening = true; + ignoreWatching = true; + ignoreCompeting = true; + }; + imageLink.enable = true; + imageZoom.enable = true; + memberCount.enable = true; + noDevtoolsWarning.enable = true; + noUnblockToJump.enable = true; + pauseInvitesForever.enable = true; + permissionsViewer.enable = true; + pictureInPicture = { + enable = true; + loop = true; + }; + platformIndicators.enable = true; + previewMessage.enable = true; + relationshipNotifier.enable = true; + revealAllSpoilers.enable = true; + serverInfo.enable = true; + serverListIndicators.enable = true; + showHiddenChannels.enable = true; + showHiddenThings.enable = true; + showTimeoutDuration = { + enable = true; + displayStyle = "tooltip"; + }; + silentTyping = { + enable = true; + enabledGlobally = false; + }; + startupTimings.enable = true; + typingIndicator.enable = true; + unlockedAvatarZoom = { + enable = true; + zoomMultiplier = 4.0; + }; + userMessagesPronouns.enable = true; + validUser.enable = true; + validReply.enable = true; + viewIcons = { + enable = true; + format = "webp"; + imgSize = "4096"; + }; + voiceChatDoubleClick.enable = true; + voiceDownload.enable = true; + voiceMessages = { + enable = true; + noiseSuppression = false; + echoCancellation = true; + }; + volumeBooster.enable = true; + webKeybinds.enable = true; + webScreenShareFixes.enable = true; + whoReacted.enable = true; + whosWatching.enable = true; + quickReply.enable = true; + questCompleter.enable = true; + shikiCodeblocks = { + enable = true; + useDevIcon = "COLOR"; + theme = "https://raw.githubusercontent.com/shikijs/textmate-grammars-themes/2d87559c7601a928b9f7e0f0dda243d2fb6d4499/packages/tm-themes/themes/kanagawa-wave.json"; + }; }; }; }; + + programs.nixcord.config.plugins.PinDMs = { + enable = true; + canCollapseDmSection = true; + # userBasedCategoryList = { + # "1202666382760607774" = [ + # { + # id = "i9dflmraztc"; + # name = "🏳️‍⚧️ girlfriends!!! :3 🏳️‍⚧️"; + # color = 16359423; + # collapsed = false; + # channels = [ + # "1436964273162289185" + # "1436988320474206311" + # "1449837047383855119" + # "1436965652861685891" + # "1436968495190642722" + # "1465424321919975454" + # ]; + # } + # { + # id = "p2v1f5y9zbd"; + # name = "🦋 best frens <3 🦋"; + # color = 10223511; + # collapsed = false; + # channels = [ + # "1436985374286155799" + # "1436965657076826222" + # "1429921297160212681" + # "1394808379381387385" + # "1433593753183977545" + # "1438254055452446881" + # "1436966389549236376" + # "1202678007026819134" + # "1437151552224624660" + # "1441906462094921789" + # "1450340272079769712" + # "1458123717124165764" + # "1436975341129306155" + # "1461885176534794427" + # "1462155159470866443" + # "1468735915076878407" + # ]; + # } + # { + # id = "c0mg5w635j8"; + # name = "🏳️‍🌈 close frens x3 🏳️‍🌈"; + # color = 10780927; + # collapsed = false; + # channels = [ + # "1437077103873888290" + # "1436975346338762823" + # "1437123353101205590" + # "1441516692164575283" + # "1419557866502754334" + # "1436985041203892315" + # "1438071327515742229" + # ]; + # } + # { + # id = "ghjrq5el3b"; + # name = "frens :3"; + # color = 7334399; + # collapsed = false; + # channels = [ + # "1437007154132422701" + # "1437006448948416526" + # "1446781617422209068" + # "1444723474835837103" + # "1437098569483161721" + # "1437237573146771469" + # "1436973705421914123" + # "1437135359359320125" + # "1438010723837022343" + # "1440553969461104740" + # "1437097082887475201" + # "1447222320015085740" + # "1462624704027164824" + # "1449513783893692589" + # "1463737720961634461" + # "1463000874392748249" + # "1461929299727749145" + # "1436984534712451105" + # "1436983282582683813" + # "1437283420312047659" + # "1437089201651847315" + # "1468324280445046824" + # ]; + # } + # { + # id = "zbmj00xw7d8"; + # name = "goop chats"; + # color = 14876549; + # collapsed = false; + # channels = [ + # "1437132769141719040" + # "1445549416516681902" + # "1458849972815663209" + # ]; + # } + # ]; + # }; + }; } diff --git a/hosts/hyrule/default.nix b/hosts/hyrule/default.nix index 837fc4d..1bb4b6b 100755 --- a/hosts/hyrule/default.nix +++ b/hosts/hyrule/default.nix @@ -61,6 +61,12 @@ in { hostName = "hyrule"; networkmanager.enable = true; + # Use CloudFlare's WARP+ 1.1.1.1 DNS service + nameservers = [ + "1.1.1.1" + "1.0.0.1" + ]; + firewall = { enable = true; allowedTCPPorts = [ @@ -82,28 +88,28 @@ in { ]; }; - wg-quick.interfaces = { - wg0 = { - address = [ - "10.10.10.4/24" - ]; - dns = ["10.10.10.1"]; - privateKeyFile = "/root/wg_agrivpn_hyrule"; - peers = [ - { - # peer's public key - publicKey = "iZ4aqYjbT8O8tfUHEuV+yWLtdoQbdBb6Nt0M4usMSiY="; + # wg-quick.interfaces = { + # wg0 = { + # address = [ + # "10.10.10.4/24" + # ]; + # dns = ["10.10.10.1"]; + # privateKeyFile = "/root/wg_agrivpn_hyrule"; + # peers = [ + # { + # # peer's public key + # publicKey = "iZ4aqYjbT8O8tfUHEuV+yWLtdoQbdBb6Nt0M4usMSiY="; - # choose which traffic to forward - allowedIPs = [ - "10.0.51.0/24" - "10.10.10.0/24" - ]; - endpoint = "150.242.34.33:54231"; - } - ]; - }; - }; + # # choose which traffic to forward + # allowedIPs = [ + # "10.0.51.0/24" + # "10.10.10.0/24" + # ]; + # endpoint = "150.242.34.33:54231"; + # } + # ]; + # }; + # }; }; users = { diff --git a/hosts/hyrule/services/forgejo.nix b/hosts/hyrule/services/forgejo.nix index f228116..d5d680d 100644 --- a/hosts/hyrule/services/forgejo.nix +++ b/hosts/hyrule/services/forgejo.nix @@ -18,8 +18,8 @@ server = { # ENABLE_ACME = true; # ACME_EMAIL = "eclarkboman@gmail.com"; # change this to "me@imbored.dev" - DOMAIN = "forge.imbored.dev"; # should this be "imbored.dev"? - ROOT_URL = "https://forge.imbored.dev"; # full public URL of the Forgejo server + DOMAIN = "dobutterfliescry.net"; # should this be "imbored.dev"? + ROOT_URL = "https://forge.dobutterfliescry.net"; # full public URL of the Forgejo server # address and port to listen on HTTP_ADDR = "127.0.0.1"; HTTP_PORT = 3000; diff --git a/hosts/hyrule/services/nginx.nix b/hosts/hyrule/services/nginx.nix index 945724e..6d0205d 100644 --- a/hosts/hyrule/services/nginx.nix +++ b/hosts/hyrule/services/nginx.nix @@ -76,6 +76,7 @@ "vault.imbored.dev" = vault; # Route "forge" subdomain to forgejo # TODO: use `forgejo.settings.server.ENABLE_ACME` instead? + # "tearforge.net" = forge; "forge.dobutterfliescry.net" = forge; }; }; diff --git a/hosts/lolcathost/default.nix b/hosts/lolcathost/default.nix index 997eb05..94c3d46 100755 --- a/hosts/lolcathost/default.nix +++ b/hosts/lolcathost/default.nix @@ -27,6 +27,11 @@ in { ../modules/angryoxide.nix # ../modules/flipperzero.nix # ../modules/chameleonultragui.nix + + (import ../../overlays/default.nix { + inherit pkgs; + upkgs = pkgs-unstable; + }) ]; nix.settings.experimental-features = [ @@ -387,6 +392,8 @@ in { prismlauncher # minecraft pkgs-unstable.olympus # celeste discord + discordo + ekphos ]; programs = { diff --git a/hosts/modules/discord/nixcord.nix b/hosts/modules/discord/nixcord.nix deleted file mode 100755 index a347405..0000000 --- a/hosts/modules/discord/nixcord.nix +++ /dev/null @@ -1,29 +0,0 @@ -{ - lib, - pkgs, - config, - inputs, - outputs, - ... -}: - -{ - imports = [ - config.nixcord.homeManagerModules.nixcord - ]; - - programs.nixcord = { - enable = true; - config = { - #themeLinks = [ - # "" - #]; - - # no surrounding window frame - frameless = true; - - plugins = { - }; - }; - }; -} diff --git a/overlays/default.nix b/overlays/default.nix new file mode 100644 index 0000000..b6445d9 --- /dev/null +++ b/overlays/default.nix @@ -0,0 +1,10 @@ +{upkgs, ...}: { + nixpkgs.overlays = [ + (self: super: { + ekphos = import ../packages/ekphos.nix { + inherit upkgs; + pkgs = super; + }; + }) + ]; +} diff --git a/packages/ekphos.nix b/packages/ekphos.nix new file mode 100644 index 0000000..bf176d5 --- /dev/null +++ b/packages/ekphos.nix @@ -0,0 +1,29 @@ +{ + pkgs, + upkgs, + ... +}: let + inherit + (pkgs) + lib + ; +in + upkgs.rustPackages.rustPlatform.buildRustPackage { + pname = "ekphos"; + version = "v0.20.10"; + src = pkgs.fetchFromGitHub { + repo = "ekphos"; + owner = "hanebox"; + sha256 = "sha256-mZ6yQdPpJ9PglYyHwivVDO05vRPvwZG7DPEBJeOVlFE="; + rev = "1ac1ab68dd4ea867dadf54f60e32a9a3e0305695"; + }; + + cargoHash = "sha256-s6Elg0Fqxdlc2/428oV7POMqphx8vWaLOncO5kZyBfQ="; + + meta = { + description = "A lightweight, fast, terminal-based markdown research tool inspired by Obsidian"; + homepage = "https://github.com/hanebox/ekphos"; + license = lib.licenses.mit; + maintainers = [lib.maintainers.emileclarkb]; + }; + }