From 5c2a328858520daeada4f6a1c81690e84d890a03 Mon Sep 17 00:00:00 2001 From: Grey Jones Date: Mon, 31 Aug 2026 01:10:23 +0100 Subject: [PATCH] better consistency, add dotfiles for takamaki and new features --- dotfiles/takamaki/easyeffects/deepfilternetrc | 7 + dotfiles/takamaki/easyeffects/deesserrc | 3 + dotfiles/takamaki/easyeffects/easyeffectsrc | 23 + dotfiles/takamaki/easyeffects/equalizerrc | 288 ++++ dotfiles/takamaki/easyeffects/gaterc | 22 + dotfiles/takamaki/easyeffects/limiterrc | 8 + .../takamaki/equibop/equicord-settings.json | 1252 +++++++++++++++++ dotfiles/takamaki/equibop/quickCss.css | 42 + dotfiles/takamaki/equibop/settings.json | 26 + dotfiles/takamaki/niri.kdl | 180 +++ .../takamaki/noctalia/plugins/.placeholder | 1 + dotfiles/takamaki/noctalia/settings.toml | 311 ++++ flake.lock | 53 +- flake.nix | 5 - modules/capabilities/graphics.nix | 43 +- modules/components/shells/noctalia.nix | 9 +- modules/components/window-managers/niri.nix | 34 +- .../applications/cli/color-converter.nix | 49 + modules/features/applications/cli/nh.nix | 31 + modules/features/applications/gui/equibop.nix | 6 +- modules/features/applications/gui/floorp.nix | 2 +- modules/features/applications/gui/remmina.nix | 1 - modules/features/applications/gui/spotify.nix | 37 +- modules/features/applications/gui/vscode.nix | 4 +- modules/features/nixos/nh.nix | 19 - modules/features/services/easyeffects.nix | 14 + modules/features/shells.nix | 4 +- modules/global/home.nix | 18 +- modules/global/nixos.nix | 13 +- modules/global/options.nix | 4 +- modules/hosts/kitagawa/home/zsh.nix | 4 +- modules/hosts/kitagawa/kitagawa.nix | 1 + modules/hosts/takamaki/home/kitty.nix | 15 + modules/hosts/takamaki/home/zsh.nix | 12 +- modules/hosts/takamaki/takamaki.nix | 104 +- 35 files changed, 2455 insertions(+), 190 deletions(-) create mode 100755 dotfiles/takamaki/easyeffects/deepfilternetrc create mode 100755 dotfiles/takamaki/easyeffects/deesserrc create mode 100755 dotfiles/takamaki/easyeffects/easyeffectsrc create mode 100755 dotfiles/takamaki/easyeffects/equalizerrc create mode 100755 dotfiles/takamaki/easyeffects/gaterc create mode 100755 dotfiles/takamaki/easyeffects/limiterrc create mode 100755 dotfiles/takamaki/equibop/equicord-settings.json create mode 100755 dotfiles/takamaki/equibop/quickCss.css create mode 100755 dotfiles/takamaki/equibop/settings.json create mode 100644 dotfiles/takamaki/niri.kdl create mode 100644 dotfiles/takamaki/noctalia/plugins/.placeholder create mode 100644 dotfiles/takamaki/noctalia/settings.toml create mode 100644 modules/features/applications/cli/color-converter.nix create mode 100644 modules/features/applications/cli/nh.nix delete mode 100644 modules/features/nixos/nh.nix create mode 100644 modules/features/services/easyeffects.nix create mode 100644 modules/hosts/takamaki/home/kitty.nix diff --git a/dotfiles/takamaki/easyeffects/deepfilternetrc b/dotfiles/takamaki/easyeffects/deepfilternetrc new file mode 100755 index 0000000..d4b0e0f --- /dev/null +++ b/dotfiles/takamaki/easyeffects/deepfilternetrc @@ -0,0 +1,7 @@ +[sie][DeepFilterNet#0] +attenuationLimit=30 +maxDfProcessingThreshold=5 +maxErbProcessingThreshold=0 +minProcessingBuffer=5 +minProcessingThreshold=-5 +postFilterBeta=0.029999999329447746 diff --git a/dotfiles/takamaki/easyeffects/deesserrc b/dotfiles/takamaki/easyeffects/deesserrc new file mode 100755 index 0000000..b86bacc --- /dev/null +++ b/dotfiles/takamaki/easyeffects/deesserrc @@ -0,0 +1,3 @@ +[sie][Deesser#0] +ratio=16 +threshold=-40 diff --git a/dotfiles/takamaki/easyeffects/easyeffectsrc b/dotfiles/takamaki/easyeffects/easyeffectsrc new file mode 100755 index 0000000..3c6910d --- /dev/null +++ b/dotfiles/takamaki/easyeffects/easyeffectsrc @@ -0,0 +1,23 @@ +[EffectsPipelines] +ignoreSystemNotifications=false + +[StreamInputs] +inputDevice=alsa_input.usb-Focusrite_Scarlett_2i2_USB_Y8PK1YT167E441-00.HiFi__Mic1__source +plugins=deesser#0,equalizer#0,limiter#0 +visiblePage=pluginsPage +visiblePlugin=deesser#0 + +[StreamOutputs] +outputDevice=alsa_output.usb-Focusrite_Scarlett_2i2_USB_Y8PK1YT167E441-00.HiFi__Line__sink +plugins=equalizer#0 +visiblePlugin=equalizer#0 + +[Style] +forceBreezeTheme=false + +[Window] +autostartOnLogin=true +height=1408 +showTrayIcon=false +visiblePage=inputPage +width=1912 diff --git a/dotfiles/takamaki/easyeffects/equalizerrc b/dotfiles/takamaki/easyeffects/equalizerrc new file mode 100755 index 0000000..af7a4e6 --- /dev/null +++ b/dotfiles/takamaki/easyeffects/equalizerrc @@ -0,0 +1,288 @@ +[sie][Equalizer#0] +numBands=16 + +[sie][Equalizer#0#left] +band0Frequency=125 +band0Gain=9.73 +band0Q=1 +band0Type=0 +band10Frequency=550 +band10Gain=-12.309999999999999 +band11Frequency=900 +band11Gain=-8.239999999999998 +band11Q=3 +band12Frequency=1500 +band12Gain=-8.55 +band13Frequency=2500 +band13Gain=5.140000000000001 +band14Frequency=3000 +band14Gain=-5.98 +band14Q=2 +band15Frequency=4000 +band15Gain=5.140000000000001 +band15Q=1 +band15Type=3 +band16Type=0 +band17Type=0 +band18Type=0 +band19Type=0 +band1Frequency=126 +band1Type=0 +band20Type=0 +band21Type=0 +band22Type=0 +band23Type=0 +band24Type=0 +band25Type=0 +band26Type=0 +band27Type=0 +band28Type=0 +band29Type=0 +band2Frequency=150 +band2Gain=-20.04 +band2Q=1.5 +band2Slope=1 +band2Type=5 +band30Type=0 +band31Type=0 +band3Frequency=156.38 +band3Type=0 +band4Frequency=175 +band4Gain=7.960000000000001 +band4Q=2 +band5Frequency=194.06 +band5Type=0 +band6Frequency=240.81 +band6Type=0 +band7Frequency=250 +band7Gain=-12.41 +band7Q=2 +band8Frequency=298.834 +band8Type=0 +band9Frequency=370.834 +band9Type=0 + +[sie][Equalizer#0#right] +band0Frequency=125 +band0Gain=9.73 +band0Q=1 +band0Type=0 +band10Frequency=550 +band10Gain=-12.309999999999999 +band11Frequency=900 +band11Gain=-8.239999999999998 +band11Q=3 +band12Frequency=1500 +band12Gain=-8.55 +band13Frequency=2500 +band13Gain=5.140000000000001 +band14Frequency=3000 +band14Gain=-5.98 +band14Q=2 +band15Frequency=4000 +band15Gain=5.140000000000001 +band15Q=1 +band15Type=3 +band16Type=0 +band17Type=0 +band18Type=0 +band19Type=0 +band1Frequency=126 +band1Type=0 +band20Type=0 +band21Type=0 +band22Type=0 +band23Type=0 +band24Type=0 +band25Type=0 +band26Type=0 +band27Type=0 +band28Type=0 +band29Type=0 +band2Frequency=150 +band2Gain=-20.04 +band2Q=1.5 +band2Slope=1 +band2Type=5 +band30Type=0 +band31Type=0 +band3Frequency=156.38 +band3Type=0 +band4Frequency=175 +band4Gain=7.960000000000001 +band4Q=2 +band5Frequency=194.06 +band5Type=0 +band6Frequency=240.81 +band6Type=0 +band7Frequency=250 +band7Gain=-12.41 +band7Q=2 +band8Frequency=298.834 +band8Type=0 +band9Frequency=370.834 +band9Type=0 + +[sie][Equalizer#1] +outputGain=5 + +[sie][Equalizer#1#left] +band12Frequency=600 +band12Gain=-6.62 +band12Q=1.5 +band13Frequency=1500 +band13Gain=-8.37 +band13Q=2 +band7Frequency=125 +band7Q=1 +band7Slope=2 +band7Type=2 +band8Gain=-4.77 +band8Q=1 + +[sie][Equalizer#1#right] +band12Frequency=600 +band12Gain=-6.62 +band12Q=1.5 +band13Frequency=1500 +band13Gain=-8.37 +band13Q=2 +band7Frequency=125 +band7Q=1 +band7Slope=2 +band7Type=2 +band8Gain=-4.77 +band8Q=1 + +[soe][Equalizer#0] +numBands=10 + +[soe][Equalizer#0#left] +band0Frequency=35 +band0Gain=-8.199999809265137 +band0Mode=6 +band0Q=0.5 +band10Type=0 +band11Type=0 +band12Type=0 +band13Type=0 +band14Type=0 +band15Type=0 +band16Type=0 +band17Type=0 +band18Type=0 +band19Type=0 +band1Frequency=105 +band1Gain=5.5 +band1Mode=6 +band1Q=0.6666666865348816 +band1Type=5 +band20Type=0 +band21Type=0 +band22Type=0 +band23Type=0 +band24Type=0 +band25Type=0 +band26Type=0 +band27Type=0 +band28Type=0 +band29Type=0 +band2Frequency=130 +band2Gain=-6.300000190734863 +band2Mode=6 +band2Q=1.399999976158142 +band30Type=0 +band31Type=0 +band3Frequency=195 +band3Gain=-2.799999952316284 +band3Mode=6 +band3Q=2.200000047683716 +band4Frequency=360 +band4Gain=4 +band4Mode=6 +band4Q=3 +band5Frequency=820 +band5Gain=3.200000047683716 +band5Mode=6 +band5Q=3 +band6Frequency=950 +band6Gain=-2.799999952316284 +band6Mode=6 +band6Q=2.5 +band7Frequency=2400 +band7Gain=13.5 +band7Mode=6 +band7Q=0.8999999761581421 +band8Frequency=4250 +band8Gain=-5 +band8Mode=6 +band8Q=4 +band9Frequency=6650 +band9Gain=-6.699999809265137 +band9Mode=6 +band9Q=4 + +[soe][Equalizer#0#right] +band0Frequency=35 +band0Gain=-8.199999809265137 +band0Mode=6 +band0Q=0.5 +band10Type=0 +band11Type=0 +band12Type=0 +band13Type=0 +band14Type=0 +band15Type=0 +band16Type=0 +band17Type=0 +band18Type=0 +band19Type=0 +band1Frequency=105 +band1Gain=5.5 +band1Mode=6 +band1Q=0.6666666865348816 +band1Type=5 +band20Type=0 +band21Type=0 +band22Type=0 +band23Type=0 +band24Type=0 +band25Type=0 +band26Type=0 +band27Type=0 +band28Type=0 +band29Type=0 +band2Frequency=130 +band2Gain=-6.300000190734863 +band2Mode=6 +band2Q=1.399999976158142 +band30Type=0 +band31Type=0 +band3Frequency=195 +band3Gain=-2.799999952316284 +band3Mode=6 +band3Q=2.200000047683716 +band4Frequency=360 +band4Gain=4 +band4Mode=6 +band4Q=3 +band5Frequency=820 +band5Gain=3.200000047683716 +band5Mode=6 +band5Q=3 +band6Frequency=950 +band6Gain=-2.799999952316284 +band6Mode=6 +band6Q=2.5 +band7Frequency=2400 +band7Gain=13.5 +band7Mode=6 +band7Q=0.8999999761581421 +band8Frequency=4250 +band8Gain=-5 +band8Mode=6 +band8Q=4 +band9Frequency=6650 +band9Gain=-6.699999809265137 +band9Mode=6 +band9Q=4 diff --git a/dotfiles/takamaki/easyeffects/gaterc b/dotfiles/takamaki/easyeffects/gaterc new file mode 100755 index 0000000..d19a32c --- /dev/null +++ b/dotfiles/takamaki/easyeffects/gaterc @@ -0,0 +1,22 @@ +[sie][Gate#0] +attack=0 +curveThreshold=-50 +curveZone=-8 +hpfFrequency=300 +hysteresisThreshold=-18 +hysteresisZone=-5 +lpfFrequency=2500 +outputGain=5 +reduction=-30 +release=150 +sidechainLookahead=1.0000000000000007 +sidechainMode=1 +sidechainReactivity=5 + +[sie][Gate#1] +attack=0 +curveThreshold=-36 +curveZone=-5 +reduction=-72 +release=200 +sidechainMode=1 diff --git a/dotfiles/takamaki/easyeffects/limiterrc b/dotfiles/takamaki/easyeffects/limiterrc new file mode 100755 index 0000000..f7851ea --- /dev/null +++ b/dotfiles/takamaki/easyeffects/limiterrc @@ -0,0 +1,8 @@ +[sie][Limiter#0] +alrKnee=-0.5 +alrRelease=30 +attack=2 +gainBoost=false +inputGain=32 +lookahead=2 +release=4 diff --git a/dotfiles/takamaki/equibop/equicord-settings.json b/dotfiles/takamaki/equibop/equicord-settings.json new file mode 100755 index 0000000..719eb04 --- /dev/null +++ b/dotfiles/takamaki/equibop/equicord-settings.json @@ -0,0 +1,1252 @@ +{ + "autoUpdate": true, + "cloud": { + "authenticated": false, + "settingsSync": false, + "url": "https://cloud.equicord.org/", + "settingsSyncVersion": 1788106589220 + }, + "enableOnlineThemes": true, + "enabledThemeLinks": [], + "plugins": { + "AltKrispSwitch": { + "enabled": false + }, + "BetterAudioPlayer": { + "enabled": true, + "oscilloscope": true, + "oscilloscopeColor": "255, 255, 255", + "oscilloscopeSolidColor": false, + "spectrograph": true, + "spectrographColor": "33, 150, 243", + "spectrographSolidColor": false + }, + "BetterCommands": { + "allowNewlinesInCommands": true, + "autoFillArguments": true, + "enabled": true + }, + "BetterGifPicker": { + "enabled": true, + "keepOpen": false + }, + "BetterSettings": { + "disableFade": true, + "eagerLoad": true, + "enabled": true, + "organizeMenu": true + }, + "BetterUploadButton": { + "enabled": true + }, + "ClearURLs": { + "enabled": true + }, + "Declutter": { + "alwaysShowUsername": true, + "enabled": true, + "removeAvatarDecoration": false, + "removeClanTag": false, + "removeNameplate": false, + "removeProfileEffect": false, + "removeQuestsAboveDms": true, + "removeShopAboveDms": true, + "removeButtonTooltips": false, + "removeAudioMenus": true, + "removeServerBoostInfo": true, + "removeBillingSettings": true, + "removeGiftButton": true, + "removeUnavailableEmojiPicker": true, + "removeProfileFrame": true, + "removeLibraryAboveDms": false, + "removeFamilyCenterAboveDms": false + }, + "DisableCallIdle": { + "enabled": true + }, + "EquicordHelper": { + "accountStandingButton": false, + "disableAdoptTagPrompt": false, + "enabled": true, + "forceRoleIcon": false, + "hideVoiceIndicatorForMutedChannels": false, + "jsonGateway": false, + "noBulletPoints": false, + "noMirroredCamera": false, + "noModalAnimation": false, + "removeActivitySection": false, + "restoreFileDownloadButton": false, + "showYourOwnActivityButtons": false + }, + "FakeNitro": { + "disableEmbedPermissionCheck": false, + "emojiSize": 48, + "enableEmojiBypass": true, + "enableStickerBypass": true, + "enableStreamQualityBypass": true, + "enabled": true, + "hyperLinkText": "{{NAME}}", + "stickerSize": 160, + "transformCompoundSentence": false, + "transformEmojis": true, + "transformStickers": true, + "useEmojiHyperLinks": true, + "useStickerHyperLinks": true + }, + "FixYoutubeEmbeds": { + "enabled": true, + "youtubeDescription": false + }, + "ForceOwnerCrown": { + "enabled": true + }, + "FullUserInChatbox": { + "enabled": true + }, + "NewPluginsManager": { + "enabled": false + }, + "NoTrack": { + "disableAnalytics": true, + "enabled": true + }, + "Settings": { + "enabled": true, + "includeVencordInfoWhenCopying": true, + "settingsLocation": "aboveNitro" + }, + "WebKeybinds": { + "enabled": true, + "showNavigationButtons": true, + "overrideCommonKeybinds": true + }, + "WebScreenShareFixes": { + "enabled": true + }, + "YoutubeAdblock": { + "enabled": true + }, + "ChatInputButtonAPI": { + "enabled": false + }, + "CommandsAPI": { + "enabled": true + }, + "DynamicImageModalAPI": { + "enabled": false + }, + "MemberListDecoratorsAPI": { + "enabled": false + }, + "MessageAccessoriesAPI": { + "enabled": true + }, + "MessageDecorationsAPI": { + "enabled": false + }, + "MessageEventsAPI": { + "enabled": true + }, + "MessagePopoverAPI": { + "enabled": true + }, + "MessageUpdaterAPI": { + "enabled": false + }, + "NicknameIconsAPI": { + "enabled": false + }, + "ServerListAPI": { + "enabled": false + }, + "UserSettingsAPI": { + "enabled": true + }, + "AccountPanelServerProfile": { + "enabled": false + }, + "AlwaysAnimate": { + "enabled": false + }, + "AlwaysExpandRoles": { + "enabled": false + }, + "AlwaysTrust": { + "enabled": false + }, + "AnonymiseFileNames": { + "enabled": false + }, + "AppleMusicRichPresence": { + "enabled": false + }, + "WebRichPresence": { + "enabled": false + }, + "BetterFolders": { + "enabled": false + }, + "BetterGifAltText": { + "enabled": false + }, + "BetterRoleContext": { + "enabled": false + }, + "BetterRoleDot": { + "enabled": false + }, + "BetterSessions": { + "enabled": false + }, + "BiggerStreamPreview": { + "enabled": false + }, + "BlurNSFW": { + "enabled": false + }, + "CallTimer": { + "enabled": false + }, + "CharacterCounter": { + "enabled": false + }, + "ClientTheme": { + "enabled": false + }, + "ColorSighted": { + "enabled": false + }, + "ConsoleJanitor": { + "enabled": false + }, + "ConsoleShortcuts": { + "enabled": false + }, + "CopyEmojiMarkdown": { + "enabled": false + }, + "CopyFileContents": { + "enabled": false + }, + "CopyStickerLinks": { + "enabled": false + }, + "CopyUserURLs": { + "enabled": false + }, + "CrashHandler": { + "enabled": true + }, + "CustomCommands": { + "enabled": false + }, + "CustomIdle": { + "enabled": false + }, + "CustomRPC": { + "enabled": false + }, + "Dearrow": { + "enabled": false + }, + "Decor": { + "enabled": false + }, + "DontRoundMyTimestamps": { + "enabled": false + }, + "Experiments": { + "enabled": false + }, + "ExpressionCloner": { + "enabled": false + }, + "F8Break": { + "enabled": false + }, + "FakeProfileThemes": { + "enabled": false + }, + "FavoriteEmojiFirst": { + "enabled": false + }, + "FavoriteGifSearch": { + "enabled": false + }, + "FixCodeblockGap": { + "enabled": false + }, + "FixImagesQuality": { + "enabled": false + }, + "FixSpotifyEmbeds": { + "enabled": false + }, + "FriendInvites": { + "enabled": false + }, + "FullSearchContext": { + "enabled": false + }, + "GameActivityToggle": { + "enabled": false + }, + "GifPaste": { + "enabled": false + }, + "GreetStickerPicker": { + "enabled": false + }, + "HideMedia": { + "enabled": false + }, + "ILoveSpam": { + "enabled": false + }, + "IgnoreActivities": { + "enabled": false + }, + "ImageFilename": { + "enabled": false + }, + "ImageLink": { + "enabled": false + }, + "ImageZoom": { + "enabled": false + }, + "ImplicitRelationships": { + "enabled": false + }, + "IrcColors": { + "enabled": false + }, + "KeepCurrentChannel": { + "enabled": false + }, + "LoadingQuotes": { + "enabled": false + }, + "MemberCount": { + "enabled": false + }, + "MentionAvatars": { + "enabled": false + }, + "MessageClickActions": { + "enabled": false + }, + "MessageLatency": { + "enabled": false + }, + "MessageLinkEmbeds": { + "enabled": false + }, + "MessageLogger": { + "enabled": false + }, + "MoreQuickReactions": { + "enabled": false + }, + "MutualGroupDMs": { + "enabled": false + }, + "NewGuildSettings": { + "enabled": false + }, + "NoBlockedMessages": { + "enabled": false + }, + "NoDevtoolsWarning": { + "enabled": false + }, + "NoF1": { + "enabled": false + }, + "NoMaskedUrlPaste": { + "enabled": false + }, + "NoMiddleClickPaste": { + "enabled": false + }, + "NoMosaic": { + "enabled": false + }, + "NoOnboardingDelay": { + "enabled": false + }, + "NoPendingCount": { + "enabled": false + }, + "NoProfileThemes": { + "enabled": false + }, + "NoReplyMention": { + "enabled": false + }, + "NoServerEmojis": { + "enabled": false + }, + "NoTypingAnimation": { + "enabled": false + }, + "NoUnblockToJump": { + "enabled": false + }, + "NotificationVolume": { + "enabled": false + }, + "OnePingPerDM": { + "enabled": false + }, + "OpenInApp": { + "enabled": false + }, + "OverrideForumDefaults": { + "enabled": false + }, + "PauseInvitesForever": { + "enabled": false + }, + "PermissionFreeWill": { + "enabled": false + }, + "PermissionsViewer": { + "enabled": false + }, + "PetPet": { + "enabled": false + }, + "PictureInPicture": { + "enabled": false + }, + "PinDMs": { + "enabled": false + }, + "PlainFolderIcon": { + "enabled": false + }, + "PlatformIndicators": { + "enabled": false + }, + "PreviewMessage": { + "enabled": false + }, + "QuickMention": { + "enabled": false + }, + "QuickReply": { + "enabled": false + }, + "ReactErrorDecoder": { + "enabled": false + }, + "ReadAllNotificationsButton": { + "enabled": false + }, + "RelationshipNotifier": { + "enabled": false + }, + "ReplaceGoogleSearch": { + "enabled": false + }, + "ReplyTimestamp": { + "enabled": false + }, + "RevealAllSpoilers": { + "enabled": false + }, + "ReverseImageSearch": { + "enabled": false + }, + "ReviewDB": { + "enabled": false + }, + "RoleColorEverywhere": { + "enabled": false + }, + "SecretRingToneEnabler": { + "enabled": false + }, + "Summaries": { + "enabled": false + }, + "SendTimestamps": { + "enabled": false + }, + "ServerInfo": { + "enabled": false + }, + "ServerListIndicators": { + "enabled": false + }, + "ShikiCodeblocks": { + "enabled": false + }, + "ShowAllMessageButtons": { + "enabled": false + }, + "ShowConnections": { + "enabled": false + }, + "ShowHiddenChannels": { + "enabled": false + }, + "ShowHiddenThings": { + "enabled": false + }, + "ShowMeYourName": { + "enabled": false + }, + "ShowTimeoutDuration": { + "enabled": false + }, + "SilentMessageToggle": { + "enabled": false + }, + "SilentTyping": { + "enabled": false + }, + "SortFriends": { + "enabled": false + }, + "SpotifyCrack": { + "enabled": false + }, + "SpotifyShareCommands": { + "enabled": false + }, + "StartupTimings": { + "enabled": false + }, + "StickerPaste": { + "enabled": false + }, + "StreamerModeOn": { + "enabled": false + }, + "SuperReactionTweaks": { + "enabled": false + }, + "TextReplace": { + "enabled": false + }, + "ThemeAttributes": { + "enabled": false + }, + "Translate": { + "enabled": false + }, + "TypingIndicator": { + "enabled": false + }, + "TypingTweaks": { + "enabled": false + }, + "Unindent": { + "enabled": false + }, + "UnlockedAvatarZoom": { + "enabled": false + }, + "UnsuppressEmbeds": { + "enabled": false + }, + "UserMessagesPronouns": { + "enabled": false + }, + "UserVoiceShow": { + "enabled": false + }, + "USRBG": { + "enabled": false + }, + "ValidReply": { + "enabled": false + }, + "ValidUser": { + "enabled": false + }, + "VoiceChatDoubleClick": { + "enabled": false + }, + "VcNarrator": { + "enabled": false + }, + "ViewIcons": { + "enabled": false + }, + "ViewRaw": { + "enabled": false + }, + "VoiceDownload": { + "enabled": false + }, + "VoiceMessages": { + "enabled": false + }, + "VolumeBooster": { + "enabled": true, + "multiplier": 1 + }, + "WhoReacted": { + "enabled": false + }, + "XSOverlay": { + "enabled": false + }, + "AudioPlayerAPI": { + "enabled": false + }, + "HeaderBarAPI": { + "enabled": true + }, + "ProfileCollectionsAPI": { + "enabled": false + }, + "ProfileSectionsAPI": { + "enabled": false + }, + "SurfaceClassesAPI": { + "enabled": false + }, + "UserAreaAPI": { + "enabled": false + }, + "ConcatenatedModules": { + "enabled": false + }, + "AdvancedPermissions": { + "enabled": false + }, + "AlwaysExpandProfiles": { + "enabled": false + }, + "Animalese": { + "enabled": false + }, + "AtSomeone": { + "enabled": false + }, + "AutoZipper": { + "enabled": false + }, + "BannersEverywhere": { + "enabled": false + }, + "DecodeBase64": { + "enabled": false + }, + "BetterActivities": { + "enabled": false + }, + "BetterBanReasons": { + "enabled": false + }, + "BetterBlockedUsers": { + "enabled": false + }, + "BetterForwards": { + "enabled": false + }, + "BetterInvites": { + "enabled": false + }, + "BetterPlusReacts": { + "enabled": false + }, + "BlockKeywords": { + "enabled": false + }, + "BlockKrisp": { + "enabled": false + }, + "BypassPinPrompt": { + "enabled": false + }, + "BypassStatus": { + "enabled": false + }, + "ChannelBadges": { + "enabled": false + }, + "ChannelTabs": { + "enabled": false + }, + "CleanChannelName": { + "enabled": false + }, + "CleanerChannelGroups": { + "enabled": false + }, + "ClickableRoles": { + "enabled": false + }, + "ClientSideBlock": { + "enabled": false + }, + "ClipUpload": { + "enabled": false + }, + "CollapsibleUI": { + "enabled": false + }, + "CommandPalette": { + "enabled": false + }, + "ContentWarning": { + "enabled": false + }, + "CopyProfileColors": { + "enabled": false + }, + "CopyStatusUrls": { + "enabled": false + }, + "CopyUserMention": { + "enabled": false + }, + "CursorBuddy": { + "enabled": false + }, + "CustomFolderIcons": { + "enabled": false + }, + "CustomSounds": { + "enabled": false + }, + "CustomStatusTimeouts": { + "enabled": false + }, + "CustomTimestamps": { + "enabled": false + }, + "CustomUserColors": { + "enabled": false + }, + "DisableCameras": { + "enabled": false + }, + "DiscordDevBanner": { + "enabled": false + }, + "DownloadAllAttachments": { + "enabled": true + }, + "DragFavoriteEmotes": { + "enabled": false + }, + "Dragify": { + "enabled": false + }, + "EquibopStreamFixes": { + "enabled": false + }, + "EquicordToolbox": { + "enabled": false + }, + "Equissant": { + "enabled": false + }, + "ExitSounds": { + "enabled": false + }, + "ExportMessages": { + "enabled": false + }, + "FastDeleteChannels": { + "enabled": false + }, + "FavouriteAnything": { + "enabled": false + }, + "FileUpload": { + "enabled": false + }, + "FindReply": { + "enabled": false + }, + "FixFileExtensions": { + "enabled": false + }, + "FollowVoiceUser": { + "enabled": false + }, + "FontLoader": { + "enabled": false + }, + "FrequentQuickSwitcher": { + "enabled": false + }, + "FriendCodes": { + "enabled": false + }, + "FriendTags": { + "enabled": false + }, + "FriendshipRanks": { + "enabled": false + }, + "FullVCPFP": { + "enabled": false + }, + "Ghosted": { + "enabled": false + }, + "GifCollections": { + "enabled": false + }, + "GifMaker": { + "enabled": false + }, + "GitHubRepos": { + "enabled": false + }, + "GlobalBadges": { + "enabled": false + }, + "GoogleThat": { + "enabled": false + }, + "GuildPickerDumper": { + "enabled": false + }, + "HideChatButtons": { + "enabled": false + }, + "HideMessages": { + "enabled": false + }, + "HideServers": { + "enabled": false + }, + "HomeTyping": { + "enabled": false + }, + "HopOn": { + "enabled": false + }, + "Husk": { + "enabled": false + }, + "IRememberYou": { + "enabled": false + }, + "IconViewer": { + "enabled": false + }, + "IdleAutoRestart": { + "enabled": false + }, + "IgnoreCalls": { + "enabled": false + }, + "InRole": { + "enabled": false + }, + "Ingtoninator": { + "enabled": false + }, + "InstantScreenshare": { + "enabled": false + }, + "InvisibleChat": { + "enabled": false + }, + "InviteDefaults": { + "enabled": false + }, + "JumpTo": { + "enabled": false + }, + "KeyboardNavigation": { + "enabled": false + }, + "KeyboardSounds": { + "enabled": false + }, + "KeywordNotify": { + "enabled": false + }, + "LastActive": { + "enabled": false + }, + "LimitlessScreenshare": { + "enabled": false + }, + "LoginWithQR": { + "enabled": false + }, + "MarkdownTables": { + "enabled": false + }, + "MediaPlaybackSpeed": { + "enabled": false + }, + "MessageBurst": { + "enabled": false + }, + "MessageColors": { + "enabled": false + }, + "MessageFetchTimer": { + "enabled": false + }, + "MessageLinkTooltip": { + "enabled": false + }, + "MessageLoggerEnhanced": { + "enabled": false + }, + "MessageNotifier": { + "enabled": false + }, + "MessagePeek": { + "enabled": false + }, + "MessageTranslate": { + "enabled": false + }, + "MicLoopbackTester": { + "enabled": false + }, + "MiddleClickTweaks": { + "enabled": false + }, + "MoreCommands": { + "enabled": false + }, + "MoreStickers": { + "enabled": false + }, + "MoreUserTags": { + "enabled": false + }, + "Moyai": { + "enabled": false + }, + "MusicControls": { + "enabled": false + }, + "NeverPausePreviews": { + "enabled": false + }, + "NoNitroUpsell": { + "enabled": false + }, + "NoPushToTalk": { + "enabled": false + }, + "NoRoleHeaders": { + "enabled": false + }, + "NormalizeMessageLinks": { + "enabled": false + }, + "OrbolayBridge": { + "enabled": false + }, + "PartyMode": { + "enabled": false + }, + "CancelFriendRequest": { + "enabled": false + }, + "PinIcon": { + "enabled": false + }, + "PingNotifications": { + "enabled": false + }, + "PlatformSpoofer": { + "enabled": false + }, + "PolishWording": { + "enabled": false + }, + "ProfileSets": { + "enabled": false + }, + "Questify": { + "enabled": false, + "migrationVersion": 1 + }, + "Quoter": { + "enabled": false + }, + "RandomVoice": { + "enabled": false + }, + "RecentDMSwitcher": { + "enabled": false + }, + "RemixRevived": { + "enabled": false + }, + "RepeatMessages": { + "enabled": false + }, + "ReplyPingControl": { + "enabled": false + }, + "RichMagnetLinks": { + "enabled": false + }, + "RichPresence": { + "enabled": false + }, + "RPCEditor": { + "enabled": false + }, + "SaveFavoriteGIFs": { + "enabled": false + }, + "ScheduledMessages": { + "enabled": false + }, + "ScreenRecorder": { + "enabled": false + }, + "SearchFix": { + "enabled": false + }, + "SedEnhanced": { + "enabled": false + }, + "SekaiStickers": { + "enabled": false + }, + "ServerSearch": { + "enabled": false + }, + "ShowBadgesInChat": { + "enabled": false + }, + "ShowMessageEmbeds": { + "enabled": false + }, + "ShowResourceChannels": { + "enabled": false + }, + "ShowSongName": { + "enabled": false + }, + "Signature": { + "enabled": false + }, + "SilenceUsers": { + "enabled": false + }, + "Snowfall": { + "enabled": false + }, + "Soggy": { + "enabled": false + }, + "SongLink": { + "enabled": false + }, + "SongSpotlight": { + "enabled": false + }, + "SplitLargeMessages": { + "enabled": false + }, + "SpotifyActivityToggle": { + "enabled": false + }, + "StatusPresets": { + "enabled": false + }, + "StatusWhileActive": { + "enabled": false + }, + "SteamStatusSync": { + "enabled": false + }, + "StickerBlocker": { + "enabled": false + }, + "StopAutoUnread": { + "enabled": false + }, + "Streaks": { + "enabled": false + }, + "StreamingCodecDisabler": { + "enabled": false + }, + "TalkInReverse": { + "enabled": false + }, + "ThemeLibrary": { + "enabled": false + }, + "TidalEmbeds": { + "enabled": false + }, + "TiktokTTS": { + "enabled": false + }, + "Timezones": { + "enabled": false + }, + "Title": { + "enabled": false + }, + "ToastNotifications": { + "enabled": false + }, + "ToggleVideoBind": { + "enabled": false + }, + "ToneIndicators": { + "enabled": false + }, + "Translate+": { + "enabled": false + }, + "TriviaAI": { + "enabled": false + }, + "UnitConverter": { + "enabled": false + }, + "UniversalMention": { + "enabled": false + }, + "UnlimitedAccounts": { + "enabled": false + }, + "UnreadCountBadge": { + "enabled": false + }, + "UrlHighlighter": { + "enabled": false + }, + "UserPFP": { + "enabled": false + }, + "VcNarratorCustom": { + "enabled": false + }, + "VCPanelSettings": { + "enabled": false + }, + "VoiceButtons": { + "enabled": false + }, + "VoiceChannelLog": { + "enabled": false + }, + "VoiceChatUtilities": { + "enabled": false + }, + "VoiceJoinMessages": { + "enabled": false + }, + "VoiceMessageTranscriber": { + "enabled": false + }, + "VoiceRejoin": { + "enabled": false + }, + "VoiceStats": { + "enabled": false + }, + "WaitForSlot": { + "enabled": false + }, + "WebpackTarball": { + "enabled": false + }, + "WhitelistedEmojis": { + "enabled": false + }, + "WhosWatching": { + "enabled": false + }, + "WigglyText": { + "enabled": false + }, + "WriteUpperCase": { + "enabled": false + }, + "ZipPreview": { + "enabled": false + }, + "ConcatenatedComponentExtractor": { + "enabled": true + }, + "DisableDeepLinks": { + "enabled": true + }, + "SupportHelper": { + "enabled": true + }, + "WebContextMenus": { + "enabled": true + }, + "MusicRichPresence": { + "enabled": false + }, + "TenorGifSearch": { + "enabled": false + }, + "AutoJumpToMessage": { + "enabled": false, + "onlyWhenUnfocused": true + }, + "ShowRolesInChat": { + "enabled": false + }, + "SidebarChat": { + "enabled": false + }, + "BadgeAPI": { + "enabled": true + }, + "ContextMenuAPI": { + "enabled": true + }, + "ExtraContextMenusAPI": { + "enabled": true + }, + "NoticesAPI": { + "enabled": true + } + }, + "useQuickCss": true, + "autoUpdateNotification": true, + "themeLinks": [], + "eagerPatches": false, + "enabledThemes": [ + "noctalia.theme.css" + ], + "pinnedThemes": [ + "noctalia.theme.css" + ], + "themeNames": {}, + "themeActivationModes": {}, + "enableReactDevtools": false, + "mainWindowFrameless": true, + "frameless": true, + "transparent": false, + "winCtrlQ": false, + "windowsMaterial": "none", + "disableMinSize": false, + "winNativeTitleBar": false, + "uiElements": { + "chatBarButtons": {}, + "messagePopoverButtons": {} + }, + "notifications": { + "timeout": 5000, + "position": "bottom-right", + "useNative": "not-focused", + "missed": true, + "logLimit": 50 + }, + "ignoreResetWarning": false, + "userCssVars": {} +} \ No newline at end of file diff --git a/dotfiles/takamaki/equibop/quickCss.css b/dotfiles/takamaki/equibop/quickCss.css new file mode 100755 index 0000000..17e3fa1 --- /dev/null +++ b/dotfiles/takamaki/equibop/quickCss.css @@ -0,0 +1,42 @@ +body { + /* sizes */ + --gap: 10px; /* spacing between panels */ + --divider-thickness: 4px; /* thickness of unread messages divider and highlighted message borders */ + --border-thickness: 0px; /* thickness of borders around main panels. DOES NOT AFFECT OTHER BORDERS */ + + /* animation/transition options */ + --animations: on; /* off: disable animations/transitions, on: enable animations/transitions */ + --list-item-transition: 0.2s ease; /* transition for list items */ + --dms-icon-svg-transition: 0.35s ease; /* transition for the dms icon */ + --border-hover-transition: 1s ease; /* transition for borders when hovered */ +} + +/* color options */ +:root { + --colors: on; /* off: discord default colors, on: midnight custom colors */ + + /* text colors */ + --text-0: hsl(220, 16%, 95%); /* text on colored elements */ + --text-2: hsl(217.5, 20%, 90%); /* headings and important text */ + --text-3: hsl(219, 30%, 85%); /* normal text */ + --text-4: hsl(220.5, 14%, 75%); /* icon buttons and channels */ + --text-5: hsl(221, 13.5%, 70%); /* muted channels/chats and timestamps */ + + /* background and dark colors */ + --bg-1: #303643; /* dark buttons when clicked */ + --bg-2: #343b49; /* dark buttons */ + --bg-3: #3b4252; /* spacing, secondary elements */ + --bg-4: #2e3440; /* main background color */ + --hover: #eceff415; /* channels and buttons when hovered */ + --active: hsl(222, 18%, 35%); /* channels and buttons when clicked or selected */ + --active-2: #2e3440; /* extra state for transparent buttons */ + --message-hover: #3b425240; /* messages when hovered */ + + /* accent colors */ + --accent-1: #8fbcbb; /* links and other accent text */ + --accent-2: hsl(179, 25%, 45%); /* small accent elements */ + --accent-3: hsl(193, 25%, 45%); /* accent buttons */ + --accent-4: hsl(193, 25%, 55%); /* accent buttons when hovered */ + --accent-5: hsl(193, 25%, 60%); /* accent buttons when clicked */ + --accent-new: #bf616a; /* stuff that's normally red like mute/deafen buttons */ +}; diff --git a/dotfiles/takamaki/equibop/settings.json b/dotfiles/takamaki/equibop/settings.json new file mode 100755 index 0000000..6044a58 --- /dev/null +++ b/dotfiles/takamaki/equibop/settings.json @@ -0,0 +1,26 @@ +{ + "appBadge": true, + "arRPC": true, + "autoStartMinimized": false, + "customTitleBar": false, + "discordBranch": "stable", + "enableMenu": false, + "enableSplashScreen": true, + "hardwareAcceleration": true, + "minimizeToTray": true, + "tray": true, + "splashColor": "rgb(205, 213, 228)", + "splashBackground": "rgb(46, 52, 64)", + "hardwareVideoAcceleration": true, + "clickTrayToShowHide": true, + "arRPCDisabled": false, + "arRPCProcessScanning": true, + "audio": { + "granularSelect": false + }, + "spellCheckLanguages": [ + "en-GB", + "en" + ], + "staticTitle": true +} \ No newline at end of file diff --git a/dotfiles/takamaki/niri.kdl b/dotfiles/takamaki/niri.kdl new file mode 100644 index 0000000..31b94c4 --- /dev/null +++ b/dotfiles/takamaki/niri.kdl @@ -0,0 +1,180 @@ +include "./noctalia.kdl" +input { + keyboard { + xkb { + layout "gb" + model "" + rules "" + variant "" + } + repeat-delay 600 + repeat-rate 25 + track-layout "global" + numlock + } + mouse { + accel-speed 0.25 + accel-profile "flat" + } + focus-follows-mouse max-scroll-amount="0%" +} + +output "DP-2" { + mode "2560x1440" +} + +output "HDMI-A-2" { + mode "1920x1080@60" + transform "270" + position x=-1080 y=-250 +} + +output "HDMI-A-1" { + mode "1920x1080@60" + transform "270" + position x=-1080 y=-250 +} + +screenshot-path "~/Pictures/Screenshots/Screenshot from %Y-%m-%d %H-%M-%S.png" +prefer-no-csd +overview { zoom 0.67; } +layout { + gaps 16 + struts { + left 6 + right 6 + top 0 + bottom 0 + } + focus-ring { + width 1.5 + } + border { off; } + shadow { + on + offset x=0.000000 y=5.000000 + softness 30.000000 + spread 5.000000 + draw-behind-window false + color "#00000070" + } + default-column-width + center-focused-column "never" + always-center-single-column +} +cursor { + xcursor-theme "Bibata-Modern-Ice" + xcursor-size 22 +} +hotkey-overlay { skip-at-startup; } +binds { + Mod+B { spawn "zen-browser"; } + Mod+C { spawn "kcalc"; } + Mod+D { spawn "noctalia" "msg" "panel-toggle" "launcher"; } + Mod+E { spawn "dolphin"; } + Mod+Return { spawn "kitty"; } + Mod+O { spawn "obsidian"; } + + ISO_Level3_Shift+Comma { spawn "equibop" "--toggle-mic"; } + ISO_Level3_Shift+Period { spawn "equibop" "--toggle-deafen"; } + + Mod+Space { toggle-overview; } + Mod+Q { close-window; } + Mod+F { maximize-window-to-edges; } + Mod+Shift+F { fullscreen-window; } + Mod+Shift+E { quit; } + + Mod+L { spawn "noctalia" "msg" "session" "lock"; } + Mod+Shift+D { spawn "noctalia" "msg" "desktop-widgets-edit"; } + Mod+Shift+B { spawn "noctalia" "msg" "settings-open" "bar"; } + Mod+Shift+S { spawn "noctalia" "msg" "settings-open"; } + Mod+Period { spawn "noctalia" "msg" "panel-toggle" "control-center"; } + Mod+W { spawn "noctalia" "msg" "panel-toggle" "wallpaper"; } + Mod+Shift+P { spawn "noctalia" "msg" "panel-toggle" "session"; } + Mod+V { spawn "noctalia" "msg" "panel-toggle" "clipboard"; } + Mod+P { spawn "noctalia" "msg" "panel-toggle" "control-center" "power"; } + Ctrl+Shift+Escape { spawn "noctalia" "msg" "panel-toggle" "control-center" "system"; } + + Mod+A { spawn "toggle-easyeffects"; } + + Mod+Up { focus-workspace-up; } + Mod+Down { focus-workspace-down; } + Mod+Left { focus-column-left; } + Mod+Right { focus-column-right; } + + Mod+WheelScrollUp { focus-column-left; } + Mod+WheelScrollDown { focus-column-right; } + Mod+Shift+WheelScrollUp { focus-workspace-up; } + Mod+Shift+WheelScrollDown { focus-workspace-down; } + + Mod+Shift+Up { move-window-to-workspace-up; } + Mod+Shift+Down { move-window-to-workspace-down; } + Mod+Shift+Left { move-column-left; } + Mod+Shift+Right { move-column-right; } + + Mod+Control+Left { focus-monitor-left; } + Mod+Control+Right { focus-monitor-right; } + + Mod+Shift+Control+Left { move-window-to-monitor-left; } + Mod+Shift+Control+Right { move-window-to-monitor-right; } + + XF86AudioLowerVolume { spawn "noctalia" "msg" "volume-down" "5"; } + XF86AudioRaiseVolume { spawn "noctalia" "msg" "volume-up" "5"; } + XF86AudioMute { spawn "noctalia" "msg" "volume-mute"; } + Print { screenshot; } + Mod+XF86AudioRaiseVolume cooldown-ms=250 { spawn "increase-brightness" "/dev/i2c-10"; } + Mod+XF86AudioLowerVolume cooldown-ms=250 { spawn "decrease-brightness" "/dev/i2c-10"; } + Mod+Shift+XF86AudioRaiseVolume cooldown-ms=250 { spawn "increase-brightness" "/dev/i2c-6"; } + Mod+Shift+XF86AudioLowerVolume cooldown-ms=250 { spawn "decrease-brightness" "/dev/i2c-6"; } +} +spawn-at-startup "noctalia" +window-rule { + draw-border-with-background false + geometry-corner-radius 4 + clip-to-geometry true +} +window-rule { // Maximized on vertical monitor + match at-startup=true app-id="^steam$" title="^Steam$" + match at-startup=true app-id="^equibop$" + open-maximized-to-edges true + open-on-output "HDMI-A-1" +} +window-rule { // Steam windows float (excluding main window) + match app-id="^steam$" + exclude title="^Steam$" + exclude title=r#"^notificationtoasts_\d+_desktop$"# + default-window-height { proportion 0.5; } + open-floating true +} +window-rule { + match app-id="steam" title=r#"^notificationtoasts_\d+_desktop$"# + default-floating-position x=10 y=10 relative-to="bottom-right" +} +window-rule { // Fullscreen on main monitor + match app-id="^steam_app_\\d+$" + open-fullscreen true + open-on-output "DP-2" +} +window-rule { // Maximized on any monitor + match app-id="^code$" + open-maximized-to-edges true +} +window-rule { + match app-id="^kitty$" + default-column-width { proportion 0.4; } + open-on-output "DP-2" +} +window-rule { + match app-id="^org\\.prismlauncher\\.PrismLauncher$" + default-window-height { fixed 750; } +} +gestures { hot-corners { off; }; } +animations { + on + slowdown 1.25 +} +layer-rule { + match namespace="^noctalia-backdrop" + place-within-backdrop true +} +include "noctalia.kdl" diff --git a/dotfiles/takamaki/noctalia/plugins/.placeholder b/dotfiles/takamaki/noctalia/plugins/.placeholder new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/dotfiles/takamaki/noctalia/plugins/.placeholder @@ -0,0 +1 @@ + diff --git a/dotfiles/takamaki/noctalia/settings.toml b/dotfiles/takamaki/noctalia/settings.toml new file mode 100644 index 0000000..725abd6 --- /dev/null +++ b/dotfiles/takamaki/noctalia/settings.toml @@ -0,0 +1,311 @@ +config_version = 13 + +[backdrop] +blur_intensity = 0.65999998524785042 +enabled = true +tint_intensity = 0.44999998994171619 + +[bar] +order = [ "default" ] + + [bar.default] + background_opacity = 0.79999998211860657 + border = "surface_variant" + border_width = 0.5 + capsule_radius = 4 + capsule_thickness = 0.69999998807907104 + concave_edge_corners = false + enabled = false + end = [ "notifications", "spacer_2", "tray" ] + font_family = "SauceCodePro Nerd Font" + margin_edge = 8 + margin_ends = 8 + margin_opposite_edge = 8 + position = "left" + radius = 8 + shadow = false + start = [ "workspaces", "spacer_3", "media" ] + thickness = 44 + widget_spacing = 12 + + [bar.default.monitor.DP-2] + enabled = true + +[battery.device."/org/freedesktop/UPower/devices/battery_hidpp_battery_0"] +warning_threshold = 25 + +[brightness] +enable_ddcutil = true + +[[control_center.shortcuts]] +type = "wifi" + +[[control_center.shortcuts]] +type = "bluetooth" + +[[control_center.shortcuts]] +type = "notification" + +[[control_center.shortcuts]] +type = "power_profile" + +[desktop_widgets] +schema_version = 2 +widget_order = [] + + [desktop_widgets.grid] + cell_size = 16 + major_interval = 4 + visible = true + + [desktop_widgets.widget] + +[dock] +active_scale = 0.95000001415610313 +background_opacity = 0.79999998211860657 +border = "surface_variant" +border_width = 0.5 +concave_edge_corners = false +cross_axis_padding = 4 +enabled = true +inactive_opacity = 0.89999997988343239 +item_spacing = 0 +magnification_scale = 1.1000000014901161 +main_axis_padding = 8 +monitors = [ "DP-2" ] +pinned = [ + "net.thunderbird.Thunderbird", + "org.prismlauncher.PrismLauncher", + "github-desktop", + "unityhub", + "code", + "enteauth", + "com.protonvpn.www" +] +position = "right" +radius_bottom_right = 8 +radius_top_right = 8 +reserve_space = false +shadow = false +show_dots = true +show_running = false +smart_auto_hide = true + +[idle] +behavior_order = [ "screen-off" ] +pre_action_fade_seconds = 30 + + [idle.behavior.screen-off] + action = "screen_off" + enabled = true + timeout = 600.0 + +[location] +address = "Redditch, England" + +[lockscreen] +enabled = false +fingerprint = false + +[lockscreen_widgets] +enabled = false +schema_version = 2 +widget_order = [ "lockscreen-login-box@HDMI-A-1", "lockscreen-login-box@DP-2", "lockscreen-login-box@HDMI-A-2" ] + + [lockscreen_widgets.grid] + cell_size = 16 + major_interval = 4 + visible = true + + [lockscreen_widgets.widget."lockscreen-login-box@DP-2"] + box_height = 196.0 + box_width = 810.0 + cx = 1280.0 + cy = 1258.0 + output = "DP-2" + placement_height = 1440.0 + placement_width = 2560.0 + rotation = 0.0 + type = "login_box" + + [lockscreen_widgets.widget."lockscreen-login-box@DP-2".settings] + background_color = "surface_variant" + background_opacity = 0.88 + background_radius = 12.0 + center_password_text = false + input_opacity = 1.0 + input_radius = 6.0 + layout = "regular" + show_caps_lock = true + show_keyboard_layout = true + show_login_button = true + show_media = true + show_session_buttons = true + show_unlock_hint = true + show_weather = true + + [lockscreen_widgets.widget."lockscreen-login-box@HDMI-A-1"] + box_height = 196.0 + box_width = 810.0 + cx = 960.0 + cy = 898.0 + output = "HDMI-A-1" + placement_height = 1920.0 + placement_width = 1080.0 + rotation = 0.0 + type = "login_box" + + [lockscreen_widgets.widget."lockscreen-login-box@HDMI-A-1".settings] + background_color = "surface_variant" + background_opacity = 0.88 + background_radius = 12.0 + center_password_text = false + input_opacity = 1.0 + input_radius = 6.0 + layout = "regular" + show_caps_lock = true + show_keyboard_layout = true + show_login_button = true + show_media = true + show_session_buttons = true + show_unlock_hint = true + show_weather = true + + [lockscreen_widgets.widget."lockscreen-login-box@HDMI-A-2"] + box_height = 196.0 + box_width = 810.0 + cx = 960.0 + cy = 898.0 + output = "HDMI-A-2" + placement_height = 0.0 + placement_width = 0.0 + rotation = 0.0 + type = "login_box" + + [lockscreen_widgets.widget."lockscreen-login-box@HDMI-A-2".settings] + background_color = "surface_variant" + background_opacity = 0.88 + background_radius = 12.0 + center_password_text = false + input_opacity = 1.0 + input_radius = 6.0 + layout = "regular" + show_caps_lock = true + show_keyboard_layout = true + show_login_button = true + show_media = true + show_session_buttons = true + show_unlock_hint = true + show_weather = true + +[nightlight] +enabled = true +temperature_day = 6000 +temperature_night = 4800 + +[notification] +background_opacity = 0.99999997764825821 + +[osd] +background_opacity = 0.99999997764825821 + +[shell] +app_icon_color = "on_surface_variant" +corner_radius_scale = 0.85000001266598701 +niri_overview_type_to_launch_enabled = true +polkit_agent = true +popup_shadows = false + + [shell.animation] + speed = 1.4000000208616257 + + [shell.launcher] + app_grid = true + + [shell.panel] + clipboard_placement = "attached" + launcher_placement = "attached" + shadow = false + + [[shell.session.actions]] + action = "logout" + countdown_seconds = 0.0 + enabled = true + shortcut = "1" + variant = "default" + + [[shell.session.actions]] + action = "command" + command = "~/.local/bin/switch-os" + countdown_seconds = 0.0 + enabled = true + glyph = "brand-windows-filled" + label = "Windows" + shortcut = "2" + variant = "default" + + [[shell.session.actions]] + action = "reboot" + countdown_seconds = 0.0 + enabled = true + shortcut = "3" + variant = "default" + + [[shell.session.actions]] + action = "shutdown" + countdown_seconds = 0.0 + enabled = true + shortcut = "4" + variant = "destructive" + +[theme] +builtin = "Nord" +community_palette = "Peche" +mode = "dark" +source = "builtin" +wallpaper_scheme = "m3-content" + + [theme.templates] + builtin_ids = [ "gtk3", "gtk4", "kcolorscheme", "kitty", "niri", "qt" ] + +[wallpaper.default] +path = "/home/grey/Pictures/Wallpapers/2560x1440.png" + +[wallpaper.last] +path = "/home/grey/Pictures/Wallpapers/2560x1440.png" + +[wallpaper.monitors.DP-2] +path = "/home/grey/Pictures/Wallpapers/2560x1440.png" + +[wallpaper.monitors.HDMI-A-2] +path = "/home/grey/Pictures/Wallpapers/2560x1440.png" + +[widget.active_window] +display = "text_only" + +[widget.clock] +capsule = true +capsule_fill = "tertiary" +capsule_foreground = "on_tertiary" +capsule_padding = 4 +scale = 1.1000000000000001 + +[widget.media] +art_size = 32 +hide_when_no_media = true + +[widget.notifications] +hide_when_no_unread = true +scale = 1.1000000000000001 + +[widget.spacer_2] +type = "spacer" + +[widget.spacer_3] +type = "spacer" + +[widget.sysmon] +stat = "gpu_usage" + +[widget.workspaces] +style = "minimal" \ No newline at end of file diff --git a/flake.lock b/flake.lock index 0649476..6820c9b 100644 --- a/flake.lock +++ b/flake.lock @@ -76,11 +76,11 @@ }, "locked": { "dir": "pkgs/firefox-addons", - "lastModified": 1787976477, - "narHash": "sha256-N4ljMPGSikj3Yl4EZv7xa6KSGkmm+G5wFZBhnOCwqZw=", + "lastModified": 1788062878, + "narHash": "sha256-rcVVm6aHB0uUy0W4IE/Pbs8E7YVONklftB2v3vUqsd0=", "owner": "rycee", "repo": "nur-expressions", - "rev": "2e2c50de599df9787f6aa735ceea0a7aabcfae2a", + "rev": "b1ad358290dcf751d364b80f50bb706e30327f7b", "type": "gitlab" }, "original": { @@ -187,11 +187,11 @@ ] }, "locked": { - "lastModified": 1788053103, - "narHash": "sha256-+H+8us7JvdcVbPQMq2d0RJLpShaptiRjKfcpx9en8g0=", + "lastModified": 1788129603, + "narHash": "sha256-NIj3G63MeCajZr70RGl1xNsdsAa+0QgH+lq00doGjDY=", "ref": "refs/heads/main", - "rev": "ab89bd7fc180b742838a4883acbaf9ff47994695", - "revCount": 7, + "rev": "3131ebbfcdbbf49f073d0f81ea987300cf422a2e", + "revCount": 12, "type": "git", "url": "https://git.greyweather.dev/greyweather/nix-helper-flake" }, @@ -235,33 +235,13 @@ "type": "github" } }, - "nh": { - "inputs": { - "nixpkgs": [ - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1787933897, - "narHash": "sha256-nnMvRwXgRUktCsWf2S+9SkVVlff3QEDwUAys49zTuSc=", - "owner": "nix-community", - "repo": "nh", - "rev": "0556d89ba6d63df9d423f3e0df8450d6653a0aae", - "type": "github" - }, - "original": { - "owner": "nix-community", - "repo": "nh", - "type": "github" - } - }, "nixpkgs": { "locked": { - "lastModified": 1787900134, - "narHash": "sha256-VYXO0XZlgj06dxJZRhrD3WoSsvq/c7+/Akyoa22pefw=", + "lastModified": 1788039129, + "narHash": "sha256-pa4Q0qErvCvzCaaUph7Sm37RhR4xvPrYI8Lgz6k85+A=", "owner": "nixos", "repo": "nixpkgs", - "rev": "83199d0d373dd3ac2b9a1996b1d0263f76ab7a4c", + "rev": "d2f67949798825fe853f7c5d0492b8bf016d3f88", "type": "github" }, "original": { @@ -293,11 +273,11 @@ ] }, "locked": { - "lastModified": 1788050744, - "narHash": "sha256-O+GIRtyRZhn2Cv5NosvsoQzaPBpI2T3AGNqxwcS65Oc=", + "lastModified": 1788125858, + "narHash": "sha256-CIAwVQWtDSFiGulRQlLALXfdoJDUrtXBEtctSxXuCXQ=", "owner": "noctalia-dev", "repo": "noctalia", - "rev": "99296b25b0aa6e293fad10ae77a56e567cd6120c", + "rev": "da34acc58d6c3c5733ebe95caaeb6086cc96d7de", "type": "github" }, "original": { @@ -338,7 +318,6 @@ "helpers": "helpers", "home-manager": "home-manager", "import-tree": "import-tree", - "nh": "nh", "nixpkgs": "nixpkgs", "noctalia": "noctalia", "spicetify": "spicetify", @@ -353,11 +332,11 @@ "systems": "systems" }, "locked": { - "lastModified": 1787460061, - "narHash": "sha256-r2FJY01jRVhrZIKPdhQ3QFYsAz3wjilWTMSSH7VMOeo=", + "lastModified": 1788083617, + "narHash": "sha256-aXMDRUxm/9se+vgKViKdDcClk1k3qA3sUwT0kAYo3Fg=", "owner": "Gerg-L", "repo": "spicetify-nix", - "rev": "a8adfd6f9f341dd586d5c06dda3bbfa21c6014e7", + "rev": "bf4ed54253a61c8324a5b461638c42db77c0b980", "type": "github" }, "original": { diff --git a/flake.nix b/flake.nix index 0e57d33..fc916d6 100644 --- a/flake.nix +++ b/flake.nix @@ -20,11 +20,6 @@ inputs.nixpkgs.follows = "nixpkgs"; }; - nh = { - url = "github:nix-community/nh"; - inputs.nixpkgs.follows = "nixpkgs"; - }; - stylix = { url = "github:nix-community/stylix"; inputs.nixpkgs.follows = "nixpkgs"; diff --git a/modules/capabilities/graphics.nix b/modules/capabilities/graphics.nix index a37b23d..7660ba9 100644 --- a/modules/capabilities/graphics.nix +++ b/modules/capabilities/graphics.nix @@ -1,33 +1,22 @@ -{ inputs, self, ... }: { +{ inputs, self, ... }: let + wm-option-type = inputs.helpers.mkOptionalListOfType (inputs.helpers.mkEnumFromDirContents "${self}/modules/components/window-managers"); + shell-option-type = inputs.helpers.mkOptionalListOfType (inputs.helpers.mkEnumFromDirContents "${self}/modules/components/shells"); +in { flake.nixosModules.graphics = { config, pkgs, lib, ... }: { options.components = { displayManager = lib.mkOption { # enum that dynamically populates itself with the contents of the display-managers directory - type = lib.types.enum (map (name: lib.removeSuffix ".nix" name) ( - builtins.attrNames (builtins.readDir "${self}/modules/components/display-managers") - )); + type = inputs.helpers.mkEnumFromDirContents "${self}/modules/components/display-managers"; default = "lightdm"; }; windowManagers = lib.mkOption { - type = lib.types.either (lib.types.listOf ( - lib.types.enum (map (name: lib.removeSuffix ".nix" name) ( - builtins.attrNames (builtins.readDir "${self}/modules/components/window-managers") - )) - )) (lib.types.enum (map (name: lib.removeSuffix ".nix" name) ( - builtins.attrNames (builtins.readDir "${self}/modules/components/window-managers") - ))); + type = wm-option-type; default = []; }; shells = lib.mkOption { - type = lib.types.either (lib.types.listOf ( - lib.types.enum (map (name: lib.removeSuffix ".nix" name) ( - builtins.attrNames (builtins.readDir "${self}/modules/components/shells") - )) - )) (lib.types.enum (map (name: lib.removeSuffix ".nix" name) ( - builtins.attrNames (builtins.readDir "${self}/modules/components/shells") - ))); + type = shell-option-type; default = []; }; }; @@ -49,24 +38,12 @@ flake.homeModules.graphics = { config, pkgs, lib, ... }: { options.components = { windowManagers = lib.mkOption { - type = lib.types.either (lib.types.listOf ( - lib.types.enum (map (name: lib.removeSuffix ".nix" name) ( - builtins.attrNames (builtins.readDir "${self}/modules/components/window-managers") - )) - )) (lib.types.enum (map (name: lib.removeSuffix ".nix" name) ( - builtins.attrNames (builtins.readDir "${self}/modules/components/window-managers") - ))); + type = wm-option-type; default = []; }; shells = lib.mkOption { - type = lib.types.either (lib.types.listOf ( - lib.types.enum (map (name: lib.removeSuffix ".nix" name) ( - builtins.attrNames (builtins.readDir "${self}/modules/components/shells") - )) - )) (lib.types.enum (map (name: lib.removeSuffix ".nix" name) ( - builtins.attrNames (builtins.readDir "${self}/modules/components/shells") - ))); + type = shell-option-type; default = []; }; }; @@ -100,7 +77,7 @@ enable = true; colorScheme = "dark"; - gtk2.configLocation = "${config.home.homeDirectory}/.config/.gtkrc-2.0"; # prevents file conflicts between this and other parts of the nix config + gtk2.configLocation = "${config.xdg.configHome}/.gtkrc-2.0"; # prevents file conflicts between this and other parts of the nix config gtk2.force = true; }; }; diff --git a/modules/components/shells/noctalia.nix b/modules/components/shells/noctalia.nix index 04d543b..e90674f 100644 --- a/modules/components/shells/noctalia.nix +++ b/modules/components/shells/noctalia.nix @@ -2,7 +2,7 @@ flake.nixosModules.graphics = { pkgs, config, lib, ... }: { config = lib.mkIf ((config.components.shells == "noctalia")||(builtins.elem "noctalia" config.components.shells)) { environment.systemPackages = [ - inputs.noctalia.packages.${pkgs.system}.default + inputs.noctalia.packages.${pkgs.stdenv.hostPlatform.system}.default ]; programs.noctalia.enable = true; @@ -16,18 +16,17 @@ flake.homeModules.graphics = { pkgs, config, lib, inputs, ... }: { config = lib.mkIf ((config.components.shells == "noctalia")||(builtins.elem "noctalia" config.components.shells)) { home = { - packages = lib.mkIf (config.info.isStandalone) [ inputs.noctalia.packages.${pkgs.system}.default ]; + packages = lib.mkIf (config.info.isStandalone) [ inputs.noctalia.packages.${pkgs.stdenv.hostPlatform.system}.default ]; activation = { - symlinkNoctaliaState = lib.hm.dag.entryAfter ["writeBoundary"] (inputs.helpers.mkSymlinkActivationScript { + linkNoctaliaState = lib.hm.dag.entryAfter ["writeBoundary"] (inputs.helpers.mkSymlinkActivationScript { target = "${config.home.homeDirectory}/.local/state/noctalia/settings.toml"; source = "${config.info.rootPath}/dotfiles/${config.info.hostName}/noctalia/settings.toml"; }); - symlinkNoctaliaStatePlugins = lib.hm.dag.entryAfter ["writeBoundary"] (inputs.helpers.mkSymlinkActivationScript { + linkNoctaliaStatePlugins = lib.hm.dag.entryAfter ["writeBoundary"] (inputs.helpers.mkSymlinkActivationScript { target = "${config.home.homeDirectory}/.local/state/noctalia/plugins"; source = "${config.info.rootPath}/dotfiles/${config.info.hostName}/noctalia/plugins"; - isDir = true; }); }; }; diff --git a/modules/components/window-managers/niri.nix b/modules/components/window-managers/niri.nix index 45d3a41..bd2c10f 100644 --- a/modules/components/window-managers/niri.nix +++ b/modules/components/window-managers/niri.nix @@ -20,21 +20,19 @@ enable = true; useNautilus = true; # override niri source to use https://github.com/niri-wm/niri/pull/3642 - package = (pkgs.niri.overrideAttrs (finalAttrs: prevAttrs: - { - cargoHash = "sha256-HypBB3PL4nVFMNH2+jEK0+dG9dJ920nHi8GwRoeH/v4="; - src = pkgs.fetchFromGitHub { - owner = "niri-wm"; - repo = "niri"; - rev = "cb41d54703eef73883bb2be58e19bcf3715d777c"; - sha256 = "sha256-cLzTeMcCdQJ+kHGcOposjeheFyEG/tGOA1jFAORMHjI="; - }; - cargoDeps = pkgs.rustPlatform.fetchCargoVendor { - inherit (finalAttrs) pname src version; - hash = finalAttrs.cargoHash; - }; - } - )); + package = (pkgs.niri.overrideAttrs (finalAttrs: prevAttrs: { + cargoHash = "sha256-HypBB3PL4nVFMNH2+jEK0+dG9dJ920nHi8GwRoeH/v4="; + src = pkgs.fetchFromGitHub { + owner = "niri-wm"; + repo = "niri"; + rev = "cb41d54703eef73883bb2be58e19bcf3715d777c"; + sha256 = "sha256-cLzTeMcCdQJ+kHGcOposjeheFyEG/tGOA1jFAORMHjI="; + }; + cargoDeps = pkgs.rustPlatform.fetchCargoVendor { + inherit (finalAttrs) pname src version; + hash = finalAttrs.cargoHash; + }; + })); }; home-manager.users.grey = lib.mkIf (config.features.nixos.home-manager.enable) { @@ -45,10 +43,8 @@ flake.homeModules.graphics = { config, pkgs, lib, inputs, ... }: { home = lib.mkIf ((config.components.windowManagers == "niri")||(builtins.elem "niri" config.components.windowManagers)) { - packages = lib.mkIf (config.info.isStandalone) [ pkgs.niri ]; - - activation.symlinkNiriConfig = lib.hm.dag.entryAfter ["writeBoundary"] (inputs.helpers.mkSymlinkActivationScript { - target = "${config.home.homeDirectory}/.config/niri/config.kdl"; + activation.linkNiriConfig = lib.hm.dag.entryAfter ["writeBoundary"] (inputs.helpers.mkSymlinkActivationScript { + target = "${config.xdg.configHome}/niri/config.kdl"; source = "${config.info.rootPath}/dotfiles/${config.info.hostName}/niri.kdl"; }); }; diff --git a/modules/features/applications/cli/color-converter.nix b/modules/features/applications/cli/color-converter.nix new file mode 100644 index 0000000..f7d5745 --- /dev/null +++ b/modules/features/applications/cli/color-converter.nix @@ -0,0 +1,49 @@ +{ inputs, self, ... }: let + color-converter-package = { lib, pkgs }: pkgs.python3Packages.buildPythonApplication rec { + pname = "color-converter"; + version = "1.0.0"; + __structuredAttrs = true; + strictDeps = true; + pyproject = false; + + src = pkgs.fetchFromGitHub { + owner = "sotrali"; + repo = "color-converter"; + tag = "v${version}"; + hash = "sha256-xvU7Z6rV+o0F9s1JBGnRWccK0JhZPL7BbPOsnZJLTJM="; + }; + + dontUnpack = true; + installPhase = '' + install -Dm755 "${src}/${pname}.py" "$out/bin/${pname}" + ''; + + meta = { + description = "A robust CLI color conversion utility"; + homepage = "https://github.com/sotrali/color-converter"; + changelog = "https://github.com/sotrali/color-converter/releases/tag/${src.tag}"; + license = lib.licenses.mit; + maintainers = with lib.maintainers; [ ]; + mainProgram = "color-converter"; + platforms = lib.platforms.all; + }; + }; +in { + flake.nixosModules.global = { pkgs, lib, config, ... }: { + options.features.applications.cli.color-converter.enable = lib.mkEnableOption "color-converter"; + + config = lib.mkIf (config.features.applications.cli.color-converter.enable) (inputs.helpers.mkIfElse (config.features.nixos.home-manager.enable) { + home-manager.users.grey.features.applications.cli.color-converter.enable = lib.mkDefault true; + } { + environment.systemPackages = [ (pkgs.callPackage color-converter-package {}) ]; + }); + }; + + flake.homeModules.global = { pkgs, config, lib, ... }: { + options.features.applications.cli.color-converter.enable = lib.mkEnableOption "color-converter"; + + config = lib.mkIf (config.features.applications.cli.color-converter.enable) { + home.packages = [ (pkgs.callPackage color-converter-package {}) ]; + }; + }; +} \ No newline at end of file diff --git a/modules/features/applications/cli/nh.nix b/modules/features/applications/cli/nh.nix new file mode 100644 index 0000000..a9afae5 --- /dev/null +++ b/modules/features/applications/cli/nh.nix @@ -0,0 +1,31 @@ +{ inputs, self, ... }: let + mkNhAttrs = flake: { + enable = true; + inherit flake; + clean = { + enable = true; + dates = "Sun 05:00"; + extraArgs = "--keep 5 --keep-since 3d"; + }; + }; +in { + flake.nixosModules.global = { pkgs, config, lib, ... }: { + options.features.applications.cli.nh.enable = lib.mkEnableOption "nh"; + + config = lib.mkIf (config.features.applications.cli.nh.enable) { + programs.nh = mkNhAttrs config.info.rootPath; + + home-manager.users.grey = lib.mkIf (config.features.nixos.home-manager.enable) { + features.applications.cli.nh.enable = lib.mkDefault true; + }; + }; + }; + + flake.homeModules.global = { pkgs, config, lib, ... }: { + options.features.applications.cli.nh.enable = lib.mkEnableOption "nh"; + + config = lib.mkIf (config.features.applications.cli.nh.enable && config.info.isStandalone) { + programs.nh = mkNhAttrs config.info.rootPath; + }; + }; +} diff --git a/modules/features/applications/gui/equibop.nix b/modules/features/applications/gui/equibop.nix index 5f6edc7..4c3e464 100644 --- a/modules/features/applications/gui/equibop.nix +++ b/modules/features/applications/gui/equibop.nix @@ -17,17 +17,17 @@ home.activation = { linkEquibopConfigSettings = lib.hm.dag.entryAfter ["writeBoundary"] (inputs.helpers.mkSymlinkActivationScript { - target = "${config.home.homeDirectory}/.config/equibop/settings.json"; + target = "${config.xdg.configHome}/equibop/settings.json"; source = "${config.info.rootPath}/dotfiles/${config.info.hostName}/equibop/settings.json"; }); linkEquibopConfigEquicordSettings = lib.hm.dag.entryAfter ["writeBoundary"] (inputs.helpers.mkSymlinkActivationScript { - target = "${config.home.homeDirectory}/.config/equibop/settings/settings.json"; + target = "${config.xdg.configHome}/equibop/settings/settings.json"; source = "${config.info.rootPath}/dotfiles/${config.info.hostName}/equibop/equicord-settings.json"; }); linkEquibopConfigQuickCss = lib.hm.dag.entryAfter ["writeBoundary"] (inputs.helpers.mkSymlinkActivationScript { - target = "${config.home.homeDirectory}/.config/equibop/settings/quickCss.css"; + target = "${config.xdg.configHome}/equibop/settings/quickCss.css"; source = "${config.info.rootPath}/dotfiles/${config.info.hostName}/equibop/quickCss.css"; }); }; diff --git a/modules/features/applications/gui/floorp.nix b/modules/features/applications/gui/floorp.nix index f267256..c4e2fdf 100644 --- a/modules/features/applications/gui/floorp.nix +++ b/modules/features/applications/gui/floorp.nix @@ -14,7 +14,7 @@ config = lib.mkIf (config.features.applications.gui.floorp.enable) ( let - firefox-addons = with pkgs; inputs.firefox-addons.packages.${system}; + firefox-addons = with pkgs; inputs.firefox-addons.packages.${pkgs.stdenv.hostPlatform.system}; in { programs.floorp = { enable = true; diff --git a/modules/features/applications/gui/remmina.nix b/modules/features/applications/gui/remmina.nix index 8cb5b7a..f10d06a 100644 --- a/modules/features/applications/gui/remmina.nix +++ b/modules/features/applications/gui/remmina.nix @@ -24,7 +24,6 @@ home.activation.linkRemminaPresets = lib.hm.dag.entryAfter ["writeBoundary"] (inputs.helpers.mkSymlinkActivationScript { target = "${config.home.homeDirectory}/.local/share/remmina"; source = "${config.info.rootPath}/dotfiles/${config.info.hostName}/remmina"; - isDir = true; }); }; }; diff --git a/modules/features/applications/gui/spotify.nix b/modules/features/applications/gui/spotify.nix index af90184..447a82e 100644 --- a/modules/features/applications/gui/spotify.nix +++ b/modules/features/applications/gui/spotify.nix @@ -1,24 +1,42 @@ { inputs, self, ... }: { - flake.nixosModules.graphics = { pkgs, config, lib, ... }: { + flake.nixosModules.graphics = { pkgs, config, lib, ... }: let + spicePkgs = inputs.spicetify.legacyPackages.${pkgs.stdenv.hostPlatform.system}; + theme-option-type = with inputs.nixpkgs; lib.types.enum (builtins.attrNames spicePkgs.themes); + in { options.features.applications.gui.spotify = { enable = lib.mkEnableOption "spotify"; - spicetify.enable = lib.mkEnableOption "spicetify"; + spicetify = { + enable = lib.mkEnableOption "spicetify"; + theme = lib.mkOption { + type = lib.types.nullOr (theme-option-type); + default = null; + }; + }; }; config = lib.mkIf (config.features.applications.gui.spotify.enable) (inputs.helpers.mkIfElse (config.features.nixos.home-manager.enable) { home-manager.users.grey.features.applications.gui.spotify = { enable = lib.mkDefault true; - spicetify.enable = lib.mkDefault config.features.applications.gui.spotify.spicetify.enable; + spicetify = lib.mkDefault config.features.applications.gui.spotify.spicetify; }; } { environment.systemPackages = [ pkgs.spotify ]; }); }; - flake.homeModules.graphics = { pkgs, config, lib, ... }: { + flake.homeModules.graphics = { pkgs, config, lib, ... }: let + spicePkgs = inputs.spicetify.legacyPackages.${pkgs.stdenv.hostPlatform.system}; + theme-option-type = with inputs.nixpkgs; lib.types.enum (builtins.attrNames spicePkgs.themes); + in { options.features.applications.gui.spotify = { enable = lib.mkEnableOption "spotify"; - spicetify.enable = lib.mkEnableOption "spicetify"; + spicetify = { + enable = lib.mkEnableOption "spicetify"; + theme = lib.mkOption { + type = lib.types.nullOr (theme-option-type); + default = null; + }; + }; }; imports = [ @@ -28,13 +46,10 @@ config = lib.mkIf (config.features.applications.gui.spotify.enable) { home.packages = lib.mkIf (!config.features.applications.gui.spotify.spicetify.enable) [ pkgs.spotify ]; - programs.spicetify = - let - spicePkgs = inputs.spicetify.legacyPackages.${pkgs.stdenv.hostPlatform.system}; - in lib.mkIf (config.features.applications.gui.spotify.spicetify.enable) { + programs.spicetify = lib.mkIf (config.features.applications.gui.spotify.spicetify.enable) { enable = true; enabledExtensions = with spicePkgs.extensions; [ - hidePodcasts + # hidePodcasts ]; enabledSnippets = with spicePkgs.snippets; [ spinningCdCoverArt @@ -47,6 +62,8 @@ enabledCustomApps = with spicePkgs.apps; [ # marketplace ]; + theme = lib.mkIf (config.features.applications.gui.spotify.spicetify.theme != null) spicePkgs.themes.${config.features.applications.gui.spotify.spicetify.theme}; + windowManagerPatch = true; }; }; }; diff --git a/modules/features/applications/gui/vscode.nix b/modules/features/applications/gui/vscode.nix index cfc0c75..d16fbba 100644 --- a/modules/features/applications/gui/vscode.nix +++ b/modules/features/applications/gui/vscode.nix @@ -17,12 +17,12 @@ home.activation = { linkVsCodeConfigSettings = lib.hm.dag.entryAfter ["writeBoundary"] (inputs.helpers.mkSymlinkActivationScript { - target = "${config.home.homeDirectory}/.config/Code/User/settings.json"; + target = "${config.xdg.configHome}/Code/User/settings.json"; source = "${config.info.rootPath}/dotfiles/global/vscode/settings.json"; }); linkVsCodeConfigKeybindings = lib.hm.dag.entryAfter ["writeBoundary"] (inputs.helpers.mkSymlinkActivationScript { - target = "${config.home.homeDirectory}/.config/Code/User/keybindings.json"; + target = "${config.xdg.configHome}/Code/User/keybindings.json"; source = "${config.info.rootPath}/dotfiles/global/vscode/keybindings.json"; }); }; diff --git a/modules/features/nixos/nh.nix b/modules/features/nixos/nh.nix deleted file mode 100644 index 1327f54..0000000 --- a/modules/features/nixos/nh.nix +++ /dev/null @@ -1,19 +0,0 @@ -{ inputs, self, ... }: { - flake.nixosModules.global = { pkgs, config, lib, ... }: { - options.features.nixos.nh.enable = lib.mkOption { - type = lib.types.bool; - default = true; - }; - - config = lib.mkIf (config.features.nixos.nh.enable) { - environment.systemPackages = [ - inputs.nh.packages.${pkgs.stdenv.hostPlatform.system}.default - ]; - - programs.nh = { - enable = true; - flake = "/home/grey/nixos"; - }; - }; - }; -} \ No newline at end of file diff --git a/modules/features/services/easyeffects.nix b/modules/features/services/easyeffects.nix new file mode 100644 index 0000000..844fedd --- /dev/null +++ b/modules/features/services/easyeffects.nix @@ -0,0 +1,14 @@ +{ inputs, self, ... }: { + flake.homeModules.audio = { pkgs, config, lib, ...}: { + options.features.services.easyeffects.enable = lib.mkEnableOption "easyeffects"; + + config = lib.mkIf (config.features.services.easyeffects.enable) { + services.easyeffects.enable = true; + + home.activation.linkEasyEffectsConfig = lib.hm.dag.entryAfter ["writeBoundary"] (inputs.helpers.mkSymlinkActivationScript { + target = "${config.xdg.configHome}/easyeffects/db"; + source = "${config.info.rootPath}/dotfiles/${config.info.hostName}/easyeffects"; + }); + }; + }; +} diff --git a/modules/features/shells.nix b/modules/features/shells.nix index 769fe0a..7f45e6a 100644 --- a/modules/features/shells.nix +++ b/modules/features/shells.nix @@ -1,9 +1,7 @@ { inputs, self, ... }: { flake.nixosModules.global = { config, pkgs, lib, ... }: { options.features.shells.defaultShell = lib.mkOption { - type = lib.types.enum (map (name: lib.removeSuffix ".nix" name) ( - builtins.attrNames (builtins.readDir "${self}/modules/features/shells") - )); + type = inputs.helpers.mkEnumFromDirContents "${self}/modules/features/shells"; default = "zsh"; }; diff --git a/modules/global/home.nix b/modules/global/home.nix index 3a925f4..a7210c4 100644 --- a/modules/global/home.nix +++ b/modules/global/home.nix @@ -1,6 +1,6 @@ { inputs, self, ... }: { flake.homeModules.global = { lib, config, pkgs, ... }: { - nix.gc = { + nix.gc = lib.mkIf (!config.features.applications.cli.nh.enable) { automatic = true; persistent = true; dates = "Sun 05:00"; @@ -25,18 +25,24 @@ username = "grey"; homeDirectory = "/home/${config.home.username}"; - file = inputs.helpers.homeFilesFromStringAttrs { - dir = ".local/bin"; - attrs = config.features.applications.shellScripts; - exec = true; - }; + file = inputs.helpers.localBinFromStringAttrs config.features.applications.shellScripts; }; + targets.genericLinux.enable = config.info.isStandalone; + xdg = { enable = true; localBinInPath = true; + portal = lib.mkIf (config.info.isStandalone) { + enable = true; + xdgOpenUsePortal = true; + config.common.default = "*"; + extraPortals = with pkgs; [ xdg-desktop-portal-gtk xdg-desktop-portal-gnome ]; + }; }; + services.gnome-keyring.enable = config.info.isStandalone; + programs = { git = { enable = true; diff --git a/modules/global/nixos.nix b/modules/global/nixos.nix index b6ad058..6824c4c 100644 --- a/modules/global/nixos.nix +++ b/modules/global/nixos.nix @@ -8,7 +8,7 @@ "flakes" ]; - gc = { + gc = lib.mkIf (!config.features.applications.cli.nh.enable) { automatic = true; persistent = true; dates = "Sun 05:00"; @@ -90,5 +90,16 @@ isStandalone = lib.mkDefault false; }; }; + + xdg.portal = { + enable = true; + xdgOpenUsePortal = true; + config.common.default = "*"; + extraPortals = with pkgs; [ xdg-desktop-portal-gtk xdg-desktop-portal-gnome ]; + }; + + services.gnome.gnome-keyring.enable = true; + + environment.pathsToLink = [ "/share/xdg-desktop-portal" "/share/applications" ]; # from description of this home-manager option: https://search.nixos.org/options?channel=26.05&query=xdg.portal.enable&source=home_manager&type=options }; } \ No newline at end of file diff --git a/modules/global/options.nix b/modules/global/options.nix index c6b7a79..3e968ae 100644 --- a/modules/global/options.nix +++ b/modules/global/options.nix @@ -19,9 +19,7 @@ }; components.bootLoader = lib.mkOption { - type = lib.types.enum (map (name: lib.removeSuffix ".nix" name) ( - builtins.attrNames (builtins.readDir "${self}/modules/components/boot-loaders") - )); + type = inputs.helpers.mkEnumFromDirContents "${self}/modules/components/boot-loaders"; default = "grub"; }; diff --git a/modules/hosts/kitagawa/home/zsh.nix b/modules/hosts/kitagawa/home/zsh.nix index 1f56847..88fa3aa 100644 --- a/modules/hosts/kitagawa/home/zsh.nix +++ b/modules/hosts/kitagawa/home/zsh.nix @@ -5,8 +5,8 @@ shutdown-takamaki = "ssh takamaki universal-shutdown"; reboot-takamaki = "ssh takamaki universal-reboot"; switch-takamaki-os = "ssh takamaki switch-os"; - apply-config = "zsh -c 'cd /home/grey/nixos; git add .; nh os switch .'"; - update-system = "zsh -c 'cd /home/grey/nixos; git add .; nh os switch -u .'"; + apply-config = "zsh -c 'cd ${config.info.rootPath}; git add .; nh os switch .'"; + update-system = "zsh -c 'cd ${config.info.rootPath}; git add .; nh os switch -u .'"; }; }; } \ No newline at end of file diff --git a/modules/hosts/kitagawa/kitagawa.nix b/modules/hosts/kitagawa/kitagawa.nix index b5201c4..62b9cb0 100644 --- a/modules/hosts/kitagawa/kitagawa.nix +++ b/modules/hosts/kitagawa/kitagawa.nix @@ -46,6 +46,7 @@ cli = { fastfetch.enable = true; + nh.enable = true; }; extraPackages = with pkgs; [ diff --git a/modules/hosts/takamaki/home/kitty.nix b/modules/hosts/takamaki/home/kitty.nix new file mode 100644 index 0000000..73bac07 --- /dev/null +++ b/modules/hosts/takamaki/home/kitty.nix @@ -0,0 +1,15 @@ +{ inputs, self, ... }: { + flake.homeModules."grey@takamaki" = { pkgs, config, lib, ... }: { + programs.kitty = { + font = lib.mkForce { + name = "Jetbrains Mono"; + package = pkgs.nerd-fonts.jetbrains-mono; + size = 12; + }; + + extraConfig = '' + include ${config.xdg.configHome}/kitty/themes/noctalia.conf + ''; + }; + }; +} diff --git a/modules/hosts/takamaki/home/zsh.nix b/modules/hosts/takamaki/home/zsh.nix index d669f81..2c55b7f 100644 --- a/modules/hosts/takamaki/home/zsh.nix +++ b/modules/hosts/takamaki/home/zsh.nix @@ -1,9 +1,11 @@ { inputs, self, ... }: { - flake.homeModules.takamaki = { config, pkgs, ... }: { - programs.zsh.shellAliases = { - apply-config = "zsh -c 'cd ${config.info.rootPath}; git add .; home-manager switch --flake .#takamaki -b bak'"; - apply-config-trace = "zsh -c 'cd ${config.info.rootPath}; git add .; home-manager switch --flake .#takamaki -b bak --show-trace'"; - update-config = "zsh -c 'cd ${config.info.rootPath}; git add .; nix flake update; home-manager switch --flake .#takamaki -b bak'"; + flake.homeModules."grey@takamaki" = { config, pkgs, ... }: { + programs.zsh.shellAliases = let + mkConfigCommand = args: "zsh -c 'cd ${config.info.rootPath}; git add .; nh home switch ${args} -b bak'"; + in { + apply-config = mkConfigCommand ""; + trace-config = mkConfigCommand "-t"; + update-config = mkConfigCommand "-u"; }; }; } \ No newline at end of file diff --git a/modules/hosts/takamaki/takamaki.nix b/modules/hosts/takamaki/takamaki.nix index 53027db..c89a615 100644 --- a/modules/hosts/takamaki/takamaki.nix +++ b/modules/hosts/takamaki/takamaki.nix @@ -1,16 +1,17 @@ { inputs, self, ... }: { - flake.homeConfigurations.takamaki = inputs.home-manager.lib.homeManagerConfiguration { + flake.homeConfigurations."grey@takamaki" = inputs.home-manager.lib.homeManagerConfiguration { pkgs = inputs.nixpkgs.legacyPackages.x86_64-linux; - modules = with self.homeModules; [ - takamaki + modules = [ + self.homeModules."grey@takamaki" inputs.stylix.homeModules.stylix ]; extraSpecialArgs = { inherit inputs; }; }; - flake.homeModules.takamaki = { pkgs, config, lib, ... }: { + flake.homeModules."grey@takamaki" = { pkgs, config, lib, ... }: { imports = with self.homeModules; [ global + audio graphics ]; @@ -27,22 +28,63 @@ ''; }; + components = { + windowManagers = "niri"; + shells = "noctalia"; + }; + features = { shells.zsh = { enable = true; antidote.enable = true; }; + services = { + easyeffects.enable = true; + }; + applications = { cli = { fastfetch.enable = true; + color-converter.enable = true; + nh.enable = true; }; gui = { vscode.enable = true; + equibop.enable = true; + kitty.enable = true; + spotify = { + enable = true; + spicetify = { + enable = true; + theme = "comfy"; + }; + }; }; - shellScripts = { + extraPackages = with pkgs; [ + nix-init + github-desktop + ]; + + shellScripts = let + mkBrightnessScript = direction: '' + LOOP_COUNTER=0 + DEVICE=$1 + PRETTY_NAME=$(sudo ddccontrol dev:$DEVICE 2>&1 >/dev/null | grep -oP "/usr/share/ddccontrol-db/monitor/\K.+\.xml" | sed 's/.xml//') + WRITTEN="foo" + CONTROL="bar" + while [[ "$WRITTEN" != "$CONTROL" ]] && [ $LOOP_COUNTER -lt 3 ]; do + RESULT=$(sudo ddccontrol -r 0x10 -W ${direction}5 dev:$DEVICE 2> /dev/null) + WRITTEN=$(echo $RESULT | grep -oP "Writing.+\(\K\d{1,3}\)" | sed 's/)//') + CONTROL=$(echo $RESULT | grep -oP "Control.+\+/\K\d{1,3}/100" | sed 's/\/100//') + LOOP_COUNTER=$(($LOOP_COUNTER + 1)) + done + + noctalia msg notification-show "Set brightness to $WRITTEN for display $PRETTY_NAME" + ''; + in { switch-os = '' sudo efibootmgr --bootnext 0000 sudo reboot @@ -55,38 +97,30 @@ universal-shutdown = '' sudo systemctl poweroff ''; + + toggle-easyeffects = lib.mkIf (config.features.services.easyeffects.enable) '' + bypass_value=$(easyeffects -b 3) + + if [ "$bypass_value" = "1" ]; then + easyeffects -b 2 + else + easyeffects -b 1 + fi + ''; + + increase-brightness = mkBrightnessScript "+"; + + decrease-brightness = mkBrightnessScript "-"; }; + }; + }; - extraPackages = with pkgs; [ - (writeShellScriptBin "increase-brightness" '' - LOOP_COUNTER=0 - DEVICE=$1 - PRETTY_NAME=$(sudo ddccontrol dev:$DEVICE 2>&1 >/dev/null | grep -oP "/usr/share/ddccontrol-db/monitor/\K.+\.xml" | sed 's/.xml//') - while - RESULT=$(sudo ddccontrol -r 0x10 -W +5 dev:$DEVICE 2> /dev/null) - WRITTEN=$(echo $RESULT | grep -oP "Writing.+\(\K\d{1,3}\)" | sed 's/)//') - CONTROL=$(echo $RESULT | grep -oP "Control.+\+/\K\d{1,3}/100" | sed 's/\/100//') - LOOP_COUNTER=$(($LOOP_COUNTER + 1)) - [[ "$WRITTEN" != "$CONTROL" ]] && [ $LOOP_COUNTER -lt 5 ] - do true; done - - noctalia msg notification-show "Set brightness to $WRITTEN for display $PRETTY_NAME" - '') - (writeShellScriptBin "decrease-brightness" '' - LOOP_COUNTER=0 - DEVICE=$1 - PRETTY_NAME=$(sudo ddccontrol dev:$DEVICE 2>&1 >/dev/null | grep -oP "/usr/share/ddccontrol-db/monitor/\K.+\.xml" | sed 's/.xml//') - while - RESULT=$(sudo ddccontrol -r 0x10 -W -5 dev:$DEVICE 2> /dev/null) - WRITTEN=$(echo $RESULT | grep -oP "Writing.+\(\K\d{1,3}\)" | sed 's/)//') - CONTROL=$(echo $RESULT | grep -oP "Control.+\+/\K\d{1,3}/100" | sed 's/\/100//') - LOOP_COUNTER=$(($LOOP_COUNTER + 1)) - [[ "$WRITTEN" != "$CONTROL" ]] && [ $LOOP_COUNTER -lt 5 ] - do true; done - - noctalia msg notification-show "Set brightness to $WRITTEN for display $PRETTY_NAME" - '') - ]; + programs.ssh.settings = { + "sakamoto" = { + HostName = "192.168.0.40"; + Port = "22"; + User = "grey"; + IdentityFile = "~/.ssh/id_sakamoto"; }; }; };