diff --git a/flake.nix b/flake.nix index 0599a79..977e6c4 100755 --- a/flake.nix +++ b/flake.nix @@ -115,25 +115,26 @@ systems = [ "x86_64-linux" "aarch64-linux" - "aarch64-darwin" + # "aarch64-darwin" + # aarch64-darwin is currently disabled due to lack of maintenance ]; flake = { nixosConfigurations = { demeter = buildLiminalOS { inherit inputs nixpkgs; - systemModule = ./hosts/demeter; + systemModule = ./reference/hosts/demeter; }; callisto = buildLiminalOS { inherit nixpkgs inputs; - systemModule = ./hosts/callisto; + systemModule = ./reference/hosts/callisto; }; adrastea = buildLiminalOS { inherit inputs nixpkgs; - systemModule = ./hosts/adrastea; + systemModule = ./reference/hosts/adrastea; }; cassini = buildLiminalOS { inherit inputs nixpkgs; - systemModule = ./hosts/cassini; + systemModule = ./reference/hosts/cassini; }; }; darwinConfigurations.phobos = nix-darwin.lib.darwinSystem { @@ -146,7 +147,12 @@ }; }; perSystem = - { pkgs, system, ... }: + { + pkgs, + system, + config, + ... + }: { formatter = pkgs.nixfmt-rfc-style; @@ -164,6 +170,16 @@ inputs.viminal.packages.${system}.default ]; }; + + nixosModules = { + default = config.nixosModules.liminalOS; + liminalOS = ./modules/default.nix; + }; + + homeManagerModules = { + default = config.homeManagerModules.liminalOS; + liminalOS = ./hm/modules/default.nix; + }; }; }; } diff --git a/hm/default.nix b/hm/default.nix new file mode 100644 index 0000000..2c3bf2f --- /dev/null +++ b/hm/default.nix @@ -0,0 +1,29 @@ +{ + inputs, + config, + lib, + ... +}: +let + cfg = config.liminalOS; +in +{ + imports = [ + inputs.home-manager.nixosModules.home-manager + ]; + + options.liminalOS.integrateHomeManager = lib.mkOption { + type = lib.types.bool; + default = cfg.enable; + description = '' + Whether to activate home manager with default options. Keep in mind you still have to import the liminalOS home-manager module. + ''; + }; + + config.home-manager = lib.mkIf cfg.integrateHomeManager { + useGlobalPkgs = true; + useUserPackages = true; + backupFileExtension = "backup"; + extraSpecialArgs = { inherit inputs; }; + }; +} diff --git a/hm/modules/common/default.nix b/hm/modules/common/default.nix new file mode 100644 index 0000000..a955cfd --- /dev/null +++ b/hm/modules/common/default.nix @@ -0,0 +1,10 @@ +{ + imports = [ ./shellenv ]; + # Let home Manager install and manage itself. + programs.home-manager.enable = true; + + home.file.".essentials" = { + source = ./essentials; + recursive = true; + }; +} diff --git a/hm/modules/common/essentials/README.md b/hm/modules/common/essentials/README.md new file mode 100644 index 0000000..5d8c79d --- /dev/null +++ b/hm/modules/common/essentials/README.md @@ -0,0 +1 @@ +This place contains all of the stuff that is too hard or unwieldy to manage fully with nix, but is still useful to have ready on every system. diff --git a/hm/modules/common/essentials/tabliss.json b/hm/modules/common/essentials/tabliss.json new file mode 100644 index 0000000..c4ff7a1 --- /dev/null +++ b/hm/modules/common/essentials/tabliss.json @@ -0,0 +1 @@ +{"locale":"en","widget/QmFu0MVUS_uo":null,"widget/cMOmcy4ZqrjS":null,"widget/i54ELqP74_Sv":null,"widget/B_kz3lJkUxlp":null,"widget/Yvubo6Zu9lT8":null,"widget/MHcdYwMetd1i":null,"timeZone":null,"widget/Dj61R7yvYklL":null,"data/He0QCGvD65VV":{"messages":["There is no system but GNU, and Linux is one of its kernels."]},"widget/RuC5niQwKdxR":null,"widget/LCUpMUdJn0Yf":null,"widget/yJ9fL4n4XbdH":null,"widget/FkVDvMgaeXIG":null,"widget/L8ulAGK5O_0u":{"id":"L8ulAGK5O_0u","key":"widget/literature-clock","order":1,"display":{"position":"middleCentre","fontFamily":"Lora"}},"data/default-unsplash":{"by":"topics","collections":"","featured":false,"paused":false,"search":"","topics":"xHxYTMHLgOc","timeout":900},"data/y8f2hoHcUia3":{"columns":3,"links":[{"url":"https://github.com/","icon":"github"},{"url":"https://www.youtube.com/","icon":"youtube"},{"url":"https://github.com/youwen5","icon":"user"}],"visible":true,"linkOpenStyle":false},"widget/sqbQm1Apn-Ad":null,"widget/1SHRYajLSARQ":{"id":"1SHRYajLSARQ","key":"widget/weather","order":0,"display":{"position":"topCentre","fontSize":26,"fontFamily":"Lora"}},"widget/He0QCGvD65VV":{"id":"He0QCGvD65VV","key":"widget/message","order":5,"display":{"position":"bottomCentre","fontFamily":"Lora","fontWeight":400}},"widget/y8f2hoHcUia3":{"id":"y8f2hoHcUia3","key":"widget/links","order":4,"display":{"position":"middleCentre"}},"widget/KNX14ZQq5_lc":{"id":"KNX14ZQq5_lc","key":"widget/css","order":2,"display":{"position":"middleCentre","fontFamily":""}},"widget/rOHrlmChb_Sp":null,"data/KNX14ZQq5_lc":{"input":"\n.Widget .LiteratureClock {\n padding: 20px;\n background-color: rgba(0,0,0,0.1);\n border-radius: 20px;\n backdrop-filter: blur(4px);\n font-size: 1.2em;\n max-width: 800px;\n}\n\n.Widget .Message {\n margin-bottom: 60px;\n}\n\n\n.Widget {\n user-select: none;\n}\n\n.Widget .Weather {\n padding: 20px;\n}\n\n.Widget .Links {\n margin-top: 40px;\n}\n.Widget .Links a:hover {\n scale: 1.15;\n}"},"background":{"id":"default-unsplash","key":"background/unsplash","display":{"luminosity":-0.2,"blur":0}},"widget/default-time":null,"widget/default-greeting":null,"focus":false,"data/1SHRYajLSARQ":{"showDetails":false,"units":"us","latitude":34.4133,"longitude":-119.861,"name":"Isla Vista"},"version":3} \ No newline at end of file diff --git a/hm/modules/common/essentials/vencord-settings.json b/hm/modules/common/essentials/vencord-settings.json new file mode 100644 index 0000000..b147d49 --- /dev/null +++ b/hm/modules/common/essentials/vencord-settings.json @@ -0,0 +1,617 @@ +{ + "settings": { + "autoUpdate": true, + "autoUpdateNotification": true, + "useQuickCss": true, + "themeLinks": [ + "https://raw.githubusercontent.com/catppuccin/discord/main/themes/macchiato.theme.css" + ], + "enabledThemes": [ + "stylix.theme.css" + ], + "enableReactDevtools": false, + "frameless": false, + "transparent": false, + "winCtrlQ": false, + "disableMinSize": false, + "winNativeTitleBar": false, + "plugins": { + "ChatInputButtonAPI": { + "enabled": false + }, + "CommandsAPI": { + "enabled": true + }, + "MemberListDecoratorsAPI": { + "enabled": false + }, + "MessageAccessoriesAPI": { + "enabled": true + }, + "MessageDecorationsAPI": { + "enabled": false + }, + "MessageEventsAPI": { + "enabled": true + }, + "MessagePopoverAPI": { + "enabled": false + }, + "MessageUpdaterAPI": { + "enabled": false + }, + "ServerListAPI": { + "enabled": true + }, + "UserSettingsAPI": { + "enabled": true + }, + "AlwaysAnimate": { + "enabled": false + }, + "AlwaysTrust": { + "enabled": true, + "domain": true, + "file": true + }, + "AnonymiseFileNames": { + "enabled": true, + "anonymiseByDefault": true, + "method": 0, + "randomisedLength": 7 + }, + "AppleMusicRichPresence": { + "enabled": false + }, + "WebRichPresence (arRPC)": { + "enabled": false + }, + "AutomodContext": { + "enabled": false + }, + "BANger": { + "enabled": false + }, + "BetterFolders": { + "enabled": true, + "sidebar": true, + "showFolderIcon": 1, + "keepIcons": false, + "closeAllHomeButton": false, + "closeAllFolders": false, + "forceOpen": false, + "sidebarAnim": true + }, + "BetterGifAltText": { + "enabled": false + }, + "BetterGifPicker": { + "enabled": false + }, + "BetterNotesBox": { + "enabled": false + }, + "BetterRoleContext": { + "enabled": false + }, + "BetterRoleDot": { + "enabled": true, + "bothStyles": false, + "copyRoleColorInProfilePopout": false + }, + "BetterSessions": { + "enabled": true, + "backgroundCheck": false + }, + "BetterSettings": { + "enabled": false, + "disableFade": true, + "eagerLoad": true + }, + "BetterUploadButton": { + "enabled": false + }, + "BiggerStreamPreview": { + "enabled": false + }, + "BlurNSFW": { + "enabled": false + }, + "CallTimer": { + "enabled": true + }, + "ClearURLs": { + "enabled": true + }, + "ClientTheme": { + "enabled": false + }, + "ColorSighted": { + "enabled": false + }, + "ConsoleJanitor": { + "enabled": false + }, + "ConsoleShortcuts": { + "enabled": false + }, + "CopyEmojiMarkdown": { + "enabled": false + }, + "CopyUserURLs": { + "enabled": true + }, + "CrashHandler": { + "enabled": true + }, + "CtrlEnterSend": { + "enabled": false + }, + "CustomRPC": { + "enabled": false + }, + "CustomIdle": { + "enabled": false + }, + "Dearrow": { + "enabled": false + }, + "Decor": { + "enabled": false + }, + "DisableCallIdle": { + "enabled": false + }, + "DontRoundMyTimestamps": { + "enabled": false + }, + "EmoteCloner": { + "enabled": false + }, + "Experiments": { + "enabled": false + }, + "F8Break": { + "enabled": false + }, + "FakeNitro": { + "enabled": false + }, + "FakeProfileThemes": { + "enabled": false + }, + "FavoriteEmojiFirst": { + "enabled": false + }, + "FavoriteGifSearch": { + "enabled": false + }, + "FixCodeblockGap": { + "enabled": false + }, + "FixSpotifyEmbeds": { + "enabled": false + }, + "FixYoutubeEmbeds": { + "enabled": false + }, + "ForceOwnerCrown": { + "enabled": false + }, + "FriendInvites": { + "enabled": false + }, + "FriendsSince": { + "enabled": false + }, + "GameActivityToggle": { + "enabled": false + }, + "GifPaste": { + "enabled": false + }, + "GreetStickerPicker": { + "enabled": false + }, + "HideAttachments": { + "enabled": false + }, + "iLoveSpam": { + "enabled": false + }, + "IgnoreActivities": { + "enabled": false + }, + "ImageLink": { + "enabled": false + }, + "ImageZoom": { + "enabled": false + }, + "ImplicitRelationships": { + "enabled": false + }, + "InvisibleChat": { + "enabled": false + }, + "KeepCurrentChannel": { + "enabled": false + }, + "LastFMRichPresence": { + "enabled": false + }, + "LoadingQuotes": { + "enabled": false + }, + "MaskedLinkPaste": { + "enabled": false + }, + "MemberCount": { + "enabled": false + }, + "MessageClickActions": { + "enabled": false + }, + "MessageLatency": { + "enabled": false + }, + "MessageLinkEmbeds": { + "enabled": false + }, + "MessageLogger": { + "enabled": false + }, + "MessageTags": { + "enabled": false + }, + "MoreCommands": { + "enabled": false + }, + "MoreKaomoji": { + "enabled": false + }, + "MoreUserTags": { + "enabled": false + }, + "Moyai": { + "enabled": false + }, + "MutualGroupDMs": { + "enabled": false + }, + "NewGuildSettings": { + "enabled": false + }, + "NoBlockedMessages": { + "enabled": false + }, + "NoDefaultHangStatus": { + "enabled": false + }, + "NoDevtoolsWarning": { + "enabled": false + }, + "NoF1": { + "enabled": false + }, + "NoMosaic": { + "enabled": false + }, + "NoOnboardingDelay": { + "enabled": false + }, + "NoPendingCount": { + "enabled": false + }, + "NoProfileThemes": { + "enabled": false + }, + "NoReplyMention": { + "enabled": false + }, + "NoScreensharePreview": { + "enabled": false + }, + "NoServerEmojis": { + "enabled": false + }, + "NoTypingAnimation": { + "enabled": false + }, + "NoUnblockToJump": { + "enabled": false + }, + "NormalizeMessageLinks": { + "enabled": false + }, + "NotificationVolume": { + "enabled": false + }, + "NSFWGateBypass": { + "enabled": false + }, + "OnePingPerDM": { + "enabled": false + }, + "oneko": { + "enabled": false + }, + "OpenInApp": { + "enabled": false + }, + "OverrideForumDefaults": { + "enabled": false + }, + "PartyMode": { + "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": true + }, + "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": true, + "showMode": 0, + "hideUnreads": true + }, + "ShowHiddenThings": { + "enabled": true, + "showTimeouts": true, + "showInvitesPaused": true, + "showModView": true, + "disableDiscoveryFilters": true, + "disableDisallowedDiscoveryFilters": true + }, + "ShowMeYourName": { + "enabled": false + }, + "ShowTimeoutDuration": { + "enabled": false + }, + "SilentMessageToggle": { + "enabled": false + }, + "SilentTyping": { + "enabled": false + }, + "SortFriendRequests": { + "enabled": false + }, + "SpotifyControls": { + "enabled": true, + "hoverControls": false + }, + "SpotifyCrack": { + "enabled": false + }, + "SpotifyShareCommands": { + "enabled": false + }, + "StartupTimings": { + "enabled": false + }, + "StreamerModeOnStream": { + "enabled": false + }, + "SuperReactionTweaks": { + "enabled": false + }, + "TextReplace": { + "enabled": false + }, + "ThemeAttributes": { + "enabled": false + }, + "TimeBarAllActivities": { + "enabled": false + }, + "Translate": { + "enabled": false + }, + "TypingIndicator": { + "enabled": false + }, + "TypingTweaks": { + "enabled": false + }, + "Unindent": { + "enabled": false + }, + "UnlockedAvatarZoom": { + "enabled": false + }, + "UnsuppressEmbeds": { + "enabled": false + }, + "UserVoiceShow": { + "enabled": false + }, + "USRBG": { + "enabled": false + }, + "ValidReply": { + "enabled": false + }, + "ValidUser": { + "enabled": false + }, + "VoiceChatDoubleClick": { + "enabled": false + }, + "VcNarrator": { + "enabled": false + }, + "VencordToolbox": { + "enabled": false + }, + "ViewIcons": { + "enabled": false + }, + "ViewRaw": { + "enabled": false + }, + "VoiceDownload": { + "enabled": false + }, + "VoiceMessages": { + "enabled": false + }, + "WebKeybinds": { + "enabled": true + }, + "WebScreenShareFixes": { + "enabled": true + }, + "WhoReacted": { + "enabled": false + }, + "XSOverlay": { + "enabled": false + }, + "NoTrack": { + "enabled": true, + "disableAnalytics": true + }, + "WebContextMenus": { + "enabled": true, + "addBack": true + }, + "Settings": { + "enabled": true, + "settingsLocation": "aboveNitro" + }, + "SupportHelper": { + "enabled": true + }, + "YoutubeAdblock": { + "enabled": true + }, + "AlwaysExpandRoles": { + "enabled": false + }, + "FullSearchContext": { + "enabled": false + }, + "UserMessagesPronouns": { + "enabled": false + }, + "DynamicImageModalAPI": { + "enabled": false + }, + "AccountPanelServerProfile": { + "enabled": false + }, + "CopyFileContents": { + "enabled": false + }, + "FixImagesQuality": { + "enabled": false + }, + "MentionAvatars": { + "enabled": false + }, + "NoMaskedUrlPaste": { + "enabled": false + }, + "StickerPaste": { + "enabled": false + }, + "VolumeBooster": { + "enabled": false + } + }, + "notifications": { + "timeout": 5000, + "position": "bottom-right", + "useNative": "not-focused", + "logLimit": 50 + }, + "cloud": { + "authenticated": false, + "url": "https://api.vencord.dev/", + "settingsSync": false, + "settingsSyncVersion": 1730351821316 + } + }, + "quickCss": "" +} \ No newline at end of file diff --git a/hm/modules/common/shellenv/default.nix b/hm/modules/common/shellenv/default.nix new file mode 100644 index 0000000..a6d1d43 --- /dev/null +++ b/hm/modules/common/shellenv/default.nix @@ -0,0 +1,212 @@ +{ + config, + lib, + inputs, + pkgs, + osConfig, + ... +}: +let + cfg = config.liminalOS; +in +{ + imports = [ + inputs.nix-index-database.hmModules.nix-index + ./fastfetch + ]; + + options.liminalOS.shellEnv = { + enable = lib.mkOption { + type = lib.types.bool; + default = true; + description = '' + Whether to set up a CLI development environment. + ''; + }; + }; + + config = lib.mkIf cfg.shellEnv.enable { + + programs.bash.enable = true; + + programs.nushell = { + enable = true; + configFile.text = '' + $env.config = { + edit_mode: vi, + show_banner: false + } + ''; + }; + + programs.fzf = { + enable = true; + }; + + programs.git = { + enable = true; + userName = lib.mkDefault "liminalOS user"; + userEmail = lib.mkDefault "liminalOS@localhost"; + delta.enable = true; + maintenance.enable = true; + extraConfig = { + init.defaultBranch = "main"; + safe.directory = [ + osConfig.liminalOS.flakeLocation + ]; + }; + }; + + home.packages = [ pkgs.git-absorb ]; + + programs.lazygit = { + enable = true; + settings = { + git.paging = { + colorArg = "always"; + pager = "delta --dark --paging=never"; + }; + }; + }; + + programs.bat.enable = true; + + programs.ripgrep.enable = true; + + programs.readline = { + enable = true; + extraConfig = "set editing-mode vi"; + }; + + programs.zoxide = { + enable = true; + enableFishIntegration = true; + enableNushellIntegration = true; + enableBashIntegration = true; + }; + + programs.gh = { + enable = true; + }; + + programs.starship = { + enable = true; + enableFishIntegration = true; + enableBashIntegration = true; + enableNushellIntegration = true; + }; + + home.file.".config/starship.toml".text = builtins.readFile ./jetpack.toml; + + programs.direnv = { + enable = true; + nix-direnv.enable = true; + config.global.hide_env_diff = true; + }; + + programs.fish = { + enable = true; + shellAliases = { + ls = "eza -l --icons=auto"; + neofetch = "${pkgs.fastfetch}/bin/fastfetch"; + }; + interactiveShellInit = '' + fish_vi_key_bindings + set -g fish_greeting + ''; + plugins = [ + { + name = "autopair"; + src = pkgs.fetchFromGitHub { + owner = "jorgebucaran"; + repo = "autopair.fish"; + rev = "4d1752ff5b39819ab58d7337c69220342e9de0e2"; + hash = "sha256-qt3t1iKRRNuiLWiVoiAYOu+9E7jsyECyIqZJ/oRIT1A="; + }; + } + { + name = "fzf"; + src = pkgs.fetchFromGitHub { + owner = "PatrickF1"; + repo = "fzf.fish"; + rev = "8920367cf85eee5218cc25a11e209d46e2591e7a"; + hash = "sha256-T8KYLA/r/gOKvAivKRoeqIwE2pINlxFQtZJHpOy9GMM="; + }; + } + { + name = "sponge"; + src = pkgs.fetchFromGitHub { + owner = "meaningful-ooo"; + repo = "sponge"; + rev = "384299545104d5256648cee9d8b117aaa9a6d7be"; + hash = "sha256-MdcZUDRtNJdiyo2l9o5ma7nAX84xEJbGFhAVhK+Zm1w="; + }; + } + { + name = "done"; + src = pkgs.fetchFromGitHub { + owner = "franciscolourenco"; + repo = "done"; + rev = "eb32ade85c0f2c68cbfcff3036756bbf27a4f366"; + hash = "sha256-DMIRKRAVOn7YEnuAtz4hIxrU93ULxNoQhW6juxCoh4o="; + }; + } + ]; + }; + + programs.nix-index = { + enable = true; + enableBashIntegration = true; + enableFishIntegration = true; + }; + + programs.nix-index-database.comma.enable = true; + + programs.fd.enable = true; + + programs.btop = { + enable = true; + settings = { + vim_keys = true; + theme_background = false; + }; + }; + + programs.eza = { + enable = true; + enableFishIntegration = true; + enableBashIntegration = true; + git = true; + }; + + programs.yazi = { + enable = true; + enableBashIntegration = true; + enableFishIntegration = true; + plugins = { + mediainfo = pkgs.fetchFromGitHub { + owner = "Ape"; + repo = "mediainfo.yazi"; + rev = "c69314e80f5b45fe87a0e06a10d064ed54110439"; + hash = "sha256-8xdBPdKSiwB7iRU8DJdTHY+BjfR9D3FtyVtDL9tNiy4="; + }; + }; + settings = { + plugin = { + prepend_previewers = [ + { + mime = "{image,audio,video}/*"; + run = "mediainfo"; + } + { + mime = "application/x-subrip"; + run = "mediainfo"; + } + ]; + }; + }; + }; + + programs.zathura.enable = true; + }; +} diff --git a/hm/modules/common/shellenv/fastfetch/config.json b/hm/modules/common/shellenv/fastfetch/config.json new file mode 100644 index 0000000..2021c56 --- /dev/null +++ b/hm/modules/common/shellenv/fastfetch/config.json @@ -0,0 +1,81 @@ +{ + "$schema": "https://github.com/fastfetch-cli/fastfetch/raw/dev/doc/json_schema.json", + "display": { + "separator": " " + }, + "modules": [ + "break", + "break", + "break", + "break", + "break", + { + "type": "title", + "keyWidth": 10 + }, + "break", + { + "type": "os", + "key": " ", + "keyColor": "34", + "format": "{3} on {12}" + }, + { + "type": "kernel", + "key": " ", + "keyColor": "34" + }, + { + "type": "packages", + "key": " ", + "keyColor": "34" + }, + { + "type": "shell", + "key": " ", + "keyColor": "34" + }, + { + "type": "terminal", + "key": " ", + "keyColor": "34" + }, + { + "type": "wm", + "key": " ", + "keyColor": "34" + }, + { + "type": "CPU", + "key": " ", + "keyColor": "34" + }, + { + "type": "GPU", + "key": "󰍹 ", + "keyColor": "34" + }, + { + "type": "uptime", + "key": " ", + "keyColor": "34" + }, + { + "type": "media", + "key": "󰝚 ", + "keyColor": "34" + }, + { + "type": "player", + "key": " ", + "keyColor": "34" + }, + "break", + { + "type": "custom", + "format": "\u001b[90m \u001b[31m \u001b[32m \u001b[33m \u001b[34m \u001b[35m \u001b[36m \u001b[37m " + }, + "break", + "break" + ] +} diff --git a/hm/modules/common/shellenv/fastfetch/default.nix b/hm/modules/common/shellenv/fastfetch/default.nix new file mode 100644 index 0000000..a7fc792 --- /dev/null +++ b/hm/modules/common/shellenv/fastfetch/default.nix @@ -0,0 +1,39 @@ +{ config, lib, ... }: +let + fastfetchConfig = builtins.fromJSON (builtins.readFile ./config.json); + cfg = config.liminalOS.shellEnv.fastfetch; +in +{ + options.liminalOS.shellEnv.fastfetch = { + enable = lib.mkOption { + type = lib.types.bool; + default = config.liminalOS.shellEnv.enable; + description = '' + Whether to set up and configure fastfetch. + ''; + }; + useKittyImage = lib.mkOption { + type = lib.types.bool; + default = cfg.enable; + description = '' + Whether to use the kitty image protocol. + ''; + }; + }; + config.programs.fastfetch = lib.mkIf cfg.enable { + enable = true; + settings = ( + fastfetchConfig + // { + logo = { + height = 18; + padding = { + top = 2; + }; + type = if cfg.useKittyImage then "kitty" else "auto"; + source = lib.mkIf cfg.useKittyImage ./nixos-logo.png; + }; + } + ); + }; +} diff --git a/hm/modules/common/shellenv/fastfetch/nixos-logo.png b/hm/modules/common/shellenv/fastfetch/nixos-logo.png new file mode 100644 index 0000000..acbaad4 Binary files /dev/null and b/hm/modules/common/shellenv/fastfetch/nixos-logo.png differ diff --git a/hm/modules/common/shellenv/jetpack.toml b/hm/modules/common/shellenv/jetpack.toml new file mode 100644 index 0000000..2d209c7 --- /dev/null +++ b/hm/modules/common/shellenv/jetpack.toml @@ -0,0 +1,315 @@ +# version: 1.0.0 + +add_newline = false +continuation_prompt = "[▸▹ ](dimmed white)" + +format = """( $nix_shell$container$fill$git_metrics\n)$cmd_duration\ +$hostname\ +$localip\ +$shlvl\ +$shell\ +$env_var\ +$jobs\ +$sudo\ +$username\ +$character""" + +right_format = """ +$singularity\ +$kubernetes\ +$directory\ +$vcsh\ +$fossil_branch\ +$git_branch\ +$git_commit\ +$git_state\ +$git_status\ +$hg_branch\ +$pijul_channel\ +$docker_context\ +$package\ +$c\ +$cmake\ +$cobol\ +$daml\ +$dart\ +$deno\ +$dotnet\ +$elixir\ +$elm\ +$erlang\ +$fennel\ +$golang\ +$guix_shell\ +$haskell\ +$haxe\ +$helm\ +$java\ +$julia\ +$kotlin\ +$gradle\ +$lua\ +$nim\ +$nodejs\ +$ocaml\ +$opa\ +$perl\ +$php\ +$pulumi\ +$purescript\ +$python\ +$raku\ +$rlang\ +$red\ +$ruby\ +$rust\ +$scala\ +$solidity\ +$swift\ +$terraform\ +$vlang\ +$vagrant\ +$zig\ +$buf\ +$conda\ +$meson\ +$spack\ +$memory_usage\ +$aws\ +$gcloud\ +$openstack\ +$azure\ +$crystal\ +$custom\ +$status\ +$os\ +$battery\ +$time""" + +[fill] +symbol = ' ' + +[character] +format = "$symbol " +success_symbol = "[◎](bold italic bright-yellow)" +error_symbol = "[○](italic purple)" +vimcmd_symbol = "[■](italic dimmed green)" +# not supported in zsh +vimcmd_replace_one_symbol = "◌" +vimcmd_replace_symbol = "□" +vimcmd_visual_symbol = "▼" + +[env_var.VIMSHELL] +format = "[$env_value]($style)" +style = 'green italic' + +[sudo] +format = "[$symbol]($style)" +style = "bold italic bright-purple" +symbol = "⋈┈" +disabled = false + +[username] +style_user = "bright-yellow bold italic" +style_root = "purple bold italic" +format = "[⭘ $user]($style) " +disabled = false +show_always = false + +[directory] +home_symbol = "⌂" +truncation_length = 2 +truncation_symbol = "□ " +read_only = " ◈" +use_os_path_sep = true +style = "italic blue" +format = '[$path]($style)[$read_only]($read_only_style)' +repo_root_style = 'bold blue' +repo_root_format = '[$before_root_path]($before_repo_root_style)[$repo_root]($repo_root_style)[$path]($style)[$read_only]($read_only_style) [△](bold bright-blue)' + +[cmd_duration] +format = "[◄ $duration ](italic white)" + +[jobs] +format = "[$symbol$number]($style) " +style = "white" +symbol = "[▶](blue italic)" + +[localip] +ssh_only = true +format = " ◯[$localipv4](bold magenta)" +disabled = false + +[time] +disabled = false +format = "[ $time]($style)" +time_format = "%R" +utc_time_offset = "local" +style = "italic dimmed white" + +[battery] +format = "[ $percentage $symbol]($style)" +full_symbol = "█" +charging_symbol = "[↑](italic bold green)" +discharging_symbol = "↓" +unknown_symbol = "░" +empty_symbol = "▃" + +[[battery.display]] +threshold = 20 +style = "italic bold red" + +[[battery.display]] +threshold = 60 +style = "italic dimmed bright-purple" + +[[battery.display]] +threshold = 70 +style = "italic dimmed yellow" + +[git_branch] +format = " [$branch(:$remote_branch)]($style)" +symbol = "[△](bold italic bright-blue)" +style = "italic bright-blue" +truncation_symbol = "⋯" +truncation_length = 11 +ignore_branches = ["main", "master"] +only_attached = true + +[git_metrics] +format = '([▴$added]($added_style))([▿$deleted]($deleted_style))' +added_style = 'italic dimmed green' +deleted_style = 'italic dimmed red' +ignore_submodules = true +disabled = false + +[git_status] +style = "bold italic bright-blue" +format = "([⎪$ahead_behind$staged$modified$untracked$renamed$deleted$conflicted$stashed⎥]($style))" +conflicted = "[◪◦](italic bright-magenta)" +ahead = "[▴│[${count}](bold white)│](italic green)" +behind = "[▿│[${count}](bold white)│](italic red)" +diverged = "[◇ ▴┤[${ahead_count}](regular white)│▿┤[${behind_count}](regular white)│](italic bright-magenta)" +untracked = "[◌◦](italic bright-yellow)" +stashed = "[◃◈](italic white)" +modified = "[●◦](italic yellow)" +staged = "[▪┤[$count](bold white)│](italic bright-cyan)" +renamed = "[◎◦](italic bright-blue)" +deleted = "[✕](italic red)" + +[deno] +format = " [deno](italic) [∫ $version](green bold)" +version_format = "${raw}" + +[lua] +format = " [lua](italic) [${symbol}${version}]($style)" +version_format = "${raw}" +symbol = "⨀ " +style = "bold bright-yellow" + +[nodejs] +format = " [node](italic) [◫ ($version)](bold bright-green)" +version_format = "${raw}" +detect_files = ["package-lock.json", "yarn.lock"] +detect_folders = ["node_modules"] +detect_extensions = [] + +[python] +format = " [py](italic) [${symbol}${version}]($style)" +symbol = "[⌉](bold bright-blue)⌊ " +version_format = "${raw}" +style = "bold bright-yellow" + +[ruby] +format = " [rb](italic) [${symbol}${version}]($style)" +symbol = "◆ " +version_format = "${raw}" +style = "bold red" + +[rust] +format = " [rs](italic) [$symbol$version]($style)" +symbol = "⊃ " +version_format = "${raw}" +style = "bold red" + +[package] +format = " [pkg](italic dimmed) [$symbol$version]($style)" +version_format = "${raw}" +symbol = "◨ " +style = "dimmed yellow italic bold" + +[swift] +format = " [sw](italic) [${symbol}${version}]($style)" +symbol = "◁ " +style = "bold bright-red" +version_format = "${raw}" + +[aws] +disabled = true +format = " [aws](italic) [$symbol $profile $region]($style)" +style = "bold blue" +symbol = "▲ " + +[buf] +symbol = "■ " +format = " [buf](italic) [$symbol $version $buf_version]($style)" + +[c] +symbol = "ℂ " +format = " [$symbol($version(-$name))]($style)" + +[conda] +symbol = "◯ " +format = " conda [$symbol$environment]($style)" + +[dart] +symbol = "◁◅ " +format = " dart [$symbol($version )]($style)" + +[docker_context] +symbol = "◧ " +format = " docker [$symbol$context]($style)" + +[elixir] +symbol = "△ " +format = " exs [$symbol $version OTP $otp_version ]($style)" + +[elm] +symbol = "◩ " +format = " elm [$symbol($version )]($style)" + +[golang] +symbol = "∩ " +format = " go [$symbol($version )]($style)" + +[haskell] +symbol = "❯λ " +format = " hs [$symbol($version )]($style)" + +[java] +symbol = "∪ " +format = " java [${symbol}(${version} )]($style)" + +[julia] +symbol = "◎ " +format = " jl [$symbol($version )]($style)" + +[memory_usage] +symbol = "▪▫▪ " +format = " mem [${ram}( ${swap})]($style)" + +[nim] +symbol = "▴▲▴ " +format = " nim [$symbol($version )]($style)" + +[nix_shell] +style = 'bold italic dimmed blue' +symbol = '󱄅' +format = '[$symbol nix⎪$state⎪]($style) [$name](italic dimmed white)' +impure_msg = '[⌽](bold dimmed red)' +pure_msg = '[⌾](bold dimmed green)' +unknown_msg = '[◌](bold dimmed ellow)' + +[spack] +symbol = "◇ " +format = " spack [$symbol$environment]($style)" diff --git a/hm/modules/darwin/darwin-home.nix b/hm/modules/darwin/darwin-home.nix new file mode 100755 index 0000000..c2ea10e --- /dev/null +++ b/hm/modules/darwin/darwin-home.nix @@ -0,0 +1,81 @@ +{ + inputs, + config, + pkgs, + ... +}: +{ + home.username = "youwen"; + home.homeDirectory = "/Users/youwen"; + + # link the configuration file in current directory to the specified location in home directory + # home.file.".config/i3/wallpaper.jpg".source = ./wallpaper.jpg; + + # link all files in `./scripts` to `~/.config/i3/scripts` + # home.file.".config/i3/scripts" = { + # source = ./scripts; + # recursive = true; # link recursively + # executable = true; # make all files executable + # }; + + # encode the file content in nix configuration file directly + # home.file.".xxx".text = '' + # xxx + # ''; + + # Packages that should be installed to the user profile. + home.packages = with pkgs; [ + neofetch + + # archives + zip + xz + unzip + p7zip + + # utils + nurl # helps fetch git data for nixpkgs + + # nix related + # + # it provides the command `nom` works just like `nix` + # with more details log output + nix-output-monitor + ]; + + programs.git.extraConfig.commit.gpgsign = "false"; + + programs.oh-my-posh.enableZshIntegration = true; + + programs.bash.enable = true; + programs.zsh.enable = true; + + programs.kitty = { + enable = true; + theme = "Tokyo Night"; + font.name = "CaskaydiaCove Nerd Font"; + settings = { + font_size = 13; + window_padding_width = "8 8 0"; + confirm_os_window_close = -1; + shell_integration = "enabled"; + enable_audio_bell = "no"; + background_opacity = "0.8"; + hide_window_decorations = "titlebar-only"; + background_blur = 32; + }; + }; + + # This value determines the home Manager release that your + # configuration is compatible with. This helps avoid breakage + # when a new home Manager release introduces backwards + # incompatible changes. + home.stateVersion = "24.05"; + # + # You can update home Manager without changing this value. See + # the home Manager release notes for a list of state version + # changes in each release. + + # Let home Manager install and manage itself. + programs.home-manager.enable = true; +} diff --git a/hm/modules/default.nix b/hm/modules/default.nix new file mode 100644 index 0000000..48ebc2c --- /dev/null +++ b/hm/modules/default.nix @@ -0,0 +1,6 @@ +{ + imports = [ + ./common + ./linux + ]; +} diff --git a/hm/modules/linux/default.nix b/hm/modules/linux/default.nix new file mode 100755 index 0000000..5a67997 --- /dev/null +++ b/hm/modules/linux/default.nix @@ -0,0 +1,45 @@ +{ + pkgs, + lib, + config, + ... +}: +{ + imports = [ + ./var/easyeffects + ./programs + ./spicetify + ./desktop-environment + ./theming + ./platform-tweaks + ]; + + programs.fish.functions = lib.mkIf config.liminalOS.programs.enable { + # rebuild = ''doas nixos-rebuild --flake ~/.config/liminalOS\#${osConfig.networking.hostName} switch &| nom''; + # os-test = ''doas nixos-rebuild --flake ~/.config/liminalOS\#${osConfig.networking.hostName} test &| nom''; + # nixos-update = '' + # cd ~/.config/liminalOS + # nix flake update --commit-lock-file + # doas nixos-rebuild --flake ~/.config/liminalOS\#${osConfig.networking.hostName} switch &| nom + # ''; + nh = { + # wrapper for nh as it doesn't work with `doas` + body = '' + if count $argv > /dev/null + if contains -- os $argv or contains -- clean $argv + doas ${pkgs.nh}/bin/nh $argv -R + else + ${pkgs.nh}/bin/nh $argv + end + else + ${pkgs.nh}/bin/nh + end + ''; + }; + spt = "${pkgs.spotify-player}/bin/spotify_player"; + }; + + home.file = lib.mkIf config.liminalOS.programs.enable { + ".config/vesktop/settings.json".source = config.lib.file.mkOutOfStoreSymlink ./var/settings.json; + }; +} diff --git a/hm/modules/linux/desktop-environment/default.nix b/hm/modules/linux/desktop-environment/default.nix new file mode 100644 index 0000000..e4f9b7a --- /dev/null +++ b/hm/modules/linux/desktop-environment/default.nix @@ -0,0 +1,23 @@ +{ + osConfig, + config, + lib, + ... +}: +{ + imports = [ + ./hyprland + ./waybar + ./swaync.nix + ]; + + options.liminalOS.desktop = { + enable = lib.mkOption { + type = lib.types.bool; + default = osConfig.liminalOS.desktop.enable; + description = '' + Whether to enable the default configuration for the userland portions of the liminalOS desktop environment. + ''; + }; + }; +} diff --git a/hm/modules/linux/desktop-environment/hyprland/default.nix b/hm/modules/linux/desktop-environment/hyprland/default.nix new file mode 100644 index 0000000..207d31b --- /dev/null +++ b/hm/modules/linux/desktop-environment/hyprland/default.nix @@ -0,0 +1,394 @@ +{ + pkgs, + config, + lib, + osConfig, + ... +}: +let + cfg = config.liminalOS.desktop.hyprland; +in +{ + options.liminalOS.desktop.hyprland = { + enable = lib.mkOption { + type = lib.types.bool; + default = config.liminalOS.desktop.enable; + description = '' + Whether to enable and rice Hyprland as well as some basic desktop utilities. + ''; + }; + applyGtkFix = lib.mkOption { + type = lib.types.bool; + default = cfg.enable; + description = '' + Whether to set GSK_RENDERER environment variable to stop GTK apps from crashing. + ''; + }; + idleDaemon.enable = lib.mkOption { + type = lib.types.bool; + default = cfg.enable; + description = '' + Whether to setup and enable Hypridle with some defaults to automatically lock the screen and suspend after idling. + ''; + }; + screenlocker.enable = lib.mkOption { + type = lib.types.bool; + default = cfg.enable; + description = '' + Whether to set up Hyprlock for screen locking. + ''; + }; + }; + + config = lib.mkIf cfg.enable { + home.packages = + with pkgs; + [ + wl-clipboard + libsForQt5.qtstyleplugin-kvantum + libsForQt5.qt5ct + papirus-icon-theme + libsForQt5.qt5ct + ] + ++ (lib.optionals (!osConfig.liminalOS.theming.enable) [ + pkgs.bibata-cursors + ]); + + wayland.windowManager.hyprland = { + enable = true; + settings = { + "$mod" = "SUPER"; + "$Left" = "H"; + "$Right" = "L"; + "$Up" = "K"; + "$Down" = "J"; + env = + (lib.optionals cfg.applyGtkFix [ + "GSK_RENDERER,gl" + ]) + ++ (lib.optionals (config.liminalOS.formFactor == "laptop" && !osConfig.liminalOS.theming.enable) [ + "HYPRCURSOR_THEME,Bibata-Modern-Ice" + "HYPRCURSOR_SIZE,24" + "XCURSOR_THEME,Bibata-Modern-Ice" + "XCURSOR_SIZE,24" + ]) + ++ (lib.optionals (config.liminalOS.formFactor == "desktop" && !osConfig.liminalOS.theming.enable) [ + "HYPRCURSOR_THEME,Bibata-Modern-Ice" + "HYPRCURSOR_SIZE,26" + "XCURSOR_THEME,Bibata-Modern-Ice" + "XCURSOR_SIZE,26" + ]); + bind = + [ + # Window actions + "$mod, Q, killactive" + "$mod, W, togglefloating" + "$mod, V, togglesplit" + "$mod, Return, fullscreen" + + # Move around + "$mod, $Left, movefocus, l" + "$mod, $Right, movefocus, r" + "$mod, $Up, movefocus, u" + "$mod, $Down, movefocus, d" + + "$mod, D, workspace, previous" + + "$mod, 1, workspace, 1" + "$mod+Ctrl, H, workspace, 1" + "$mod, 2, workspace, 2" + "$mod+Ctrl, J, workspace, 2" + "$mod, 3, workspace, 3" + "$mod+Ctrl, K, workspace, 3" + "$mod, 4, workspace, 4" + "$mod+Ctrl, L, workspace, 4" + "$mod, 5, workspace, 5" + "$mod+Ctrl, semicolon, workspace, 5" + "$mod, 6, workspace, 6" + "$mod+Ctrl, apostrophe, workspace, 6" + "$mod, 7, workspace, 7" + "$mod+Ctrl, U, workspace, 7" + "$mod, 8, workspace, 8" + "$mod+Ctrl, I, workspace, 8" + "$mod, 9, workspace, 9" + "$mod+Ctrl, O, workspace, 9" + "$mod, 0, workspace, 10" + "$mod+Ctrl, P, workspace, 10" + + # Move active window to a workspace with mainMod + SHIFT + [0-9] + "$mod+Shift, 1, movetoworkspace, 1" + "$mod+Ctrl+Shift, H, movetoworkspace, 1" + "$mod+Shift, 2, movetoworkspace, 2" + "$mod+Ctrl+Shift, J, movetoworkspace, 2" + "$mod+Shift, 3, movetoworkspace, 3" + "$mod+Ctrl+Shift, K, movetoworkspace, 3" + "$mod+Shift, 4, movetoworkspace, 4" + "$mod+Ctrl+Shift, L, movetoworkspace, 4" + "$mod+Shift, 5, movetoworkspace, 5" + "$mod+Ctrl+Shift, semicolon, movetoworkspace, 5" + "$mod+Shift, 6, movetoworkspace, 6" + "$mod+Ctrl+Shift, apostrophe, movetoworkspace, 6" + "$mod+Shift, 7, movetoworkspace, 7" + "$mod+Ctrl+Shift, U, movetoworkspace, 7" + "$mod+Shift, 8, movetoworkspace, 8" + "$mod+Ctrl+Shift, I, movetoworkspace, 8" + "$mod+Shift, 9, movetoworkspace, 9" + "$mod+Ctrl+Shift, O, movetoworkspace, 9" + "$mod+Shift, 0, movetoworkspace, 10" + "$mod+Ctrl+Shift, P, movetoworkspace, 10" + + # Special workspace + "$mod, S, togglespecialworkspace" + "$mod+Alt, S, movetoworkspacesilent, special" + + # Move windows around + "$mod+Shift, $Left, movewindow, l" + "$mod+Shift, $Right, movewindow, r" + "$mod+Shift, $Up, movewindow, u" + "$mod+Shift, $Down, movewindow, d" + + "$mod+Ctrl, bracketright, movetoworkspace, r+1" + "$mod+Ctrl, bracketleft, movetoworkspace, r-1" + + "$mod, bracketright, workspace, r+1" + "$mod, bracketleft, workspace, r-1" + + # Utilities + "$mod, Space, exec, pkill -x rofi || rofi -show drun" # Run rofi application launcher + "$mod, G, exec, pkill -x rofi || rofi -show window" # Run rofi window switcher + + ''$mod, P, exec, ${pkgs.grim}/bin/grim -g "$(${pkgs.slurp}/bin/slurp)" - | ${pkgs.swappy}/bin/swappy -f -'' # Screenshot + ''$mod+Shift, P, exec, ${pkgs.grim}/bin/grim - | ${pkgs.swappy}/bin/swappy -f -'' # Screenshot + + "$mod, Backspace, exec, pkill -x wlogout || wlogout" # show logout menu + + "$mod, Z, exec, loginctl lock-session" + + # Media controls + ",XF86AudioMute, exec, ${pkgs.pamixer}/bin/pamixer -t" + ",XF86AudioPlay, exec, ${pkgs.playerctl}/bin/playerctl --player=%any,firefox play-pause" + ",XF86AudioNext, exec, ${pkgs.playerctl}/bin/playerctl --player=%any,firefox next" + ",XF86AudioRewind, exec, ${pkgs.playerctl}/bin/playerctl --player=%any,firefox previous" + ] + ++ (lib.optionals config.liminalOS.programs.zen.enable [ + "$mod, F, exec, zen" + ]) + ++ (lib.optionals config.liminalOS.desktop.swaync.enable [ + "$mod, N, exec, sleep 0.1 && ${pkgs.swaynotificationcenter}/bin/swaync-client -t -sw" + ]) + ++ (lib.optionals config.liminalOS.programs.enable [ + # Application Keybinds + "$mod, R, exec, ${pkgs.pavucontrol}/bin/pavucontrol -t 3" # open pavucontrol on 'outputs' tab + "$mod, T, exec, ${pkgs.kitty}/bin/kitty" + "$mod, E, exec, ${pkgs.xfce.thunar}/bin/thunar" + "$mod, M, exec, ${pkgs.thunderbird}/bin/thunderbird" + ]); + bindm = [ + "$mod, mouse:272, movewindow" + "$mod, mouse:273, resizewindow" + ]; + bindel = [ + ",XF86MonBrightnessDown, exec, ${pkgs.brightnessctl}/bin/brightnessctl set 5%-" + ",XF86MonBrightnessUp, exec, ${pkgs.brightnessctl}/bin/brightnessctl set 5%+" + ",XF86AudioRaiseVolume, exec, ${pkgs.pamixer}/bin/pamixer -i 5" + ",XF86AudioLowerVolume, exec, ${pkgs.pamixer}/bin/pamixer -d 5" + ]; + binde = [ + # Resize windows + "$mod+Alt, $Right, resizeactive, 30 0" + "$mod+Alt, $Left, resizeactive, -30 0" + "$mod+Alt, $Up, resizeactive, 0 -30" + "$mod+Alt, $Down, resizeactive, 0 30" + ]; + windowrulev2 = import ./windowrulev2.nix; + layerrule = [ + "blur,rofi" + "ignorezero,rofi" + "animation slide bottom 0.2 0.2 wind,rofi" + "blur,notifications" + "ignorezero,notifications" + "blur,swaync-notification-window" + "animation slide right 0.5 0.5,swaync-control-center" + "animation slide right 0.5 0.5,notifications" + "animation slide right 0.5 0.5,swaync-notification-window" + "ignorezero,swaync-notification-window" + "blur,swaync-control-center" + "ignorezero,swaync-control-center" + "blur,logout_dialog" + ]; + dwindle = { + pseudotile = "yes"; + preserve_split = "yes"; + }; + animations = { + enabled = "yes"; + bezier = [ + "wind, 0.05, 0.9, 0.1, 1.05" + "winIn, 0.1, 1.1, 0.1, 1.1" + "winOut, 0.3, -0.3, 0, 1" + "liner, 1, 1, 1, 1" + ]; + animation = [ + "windows, 1, 6, wind, slide" + "windowsIn, 1, 6, winIn, slide" + "windowsOut, 1, 5, winOut, slide" + "windowsMove, 1, 5, wind, slide" + # "border, 1, 1, liner" + # "borderangle, 1, 30, liner, loop" + "fade, 1, 10, default" + "workspaces, 1, 5, wind" + # "layers, 1, 8, default, slide" + ]; + }; + + general = { + gaps_in = "3"; + gaps_out = "8"; + border_size = "2"; + # the dot is a hyprland name, not nix syntax, so we escape it + "col.active_border" = pkgs.lib.mkForce "rgba(ca9ee6ff) rgba(f2d5cfff) 45deg"; + "col.inactive_border" = pkgs.lib.mkForce "rgba(b4befecc) rgba(6c7086cc) 45deg"; + layout = "dwindle"; + resize_on_border = "true"; + }; + + misc = { + disable_hyprland_logo = true; + disable_splash_rendering = true; + }; + + cursor = { + hide_on_key_press = true; + }; + + decoration = { + rounding = "10"; + dim_special = "0.3"; + blur = { + enabled = "yes"; + size = "6"; + passes = "3"; + new_optimizations = "on"; + ignore_opacity = "on"; + xray = "false"; + special = true; + }; + shadow = { + enabled = false; + }; + }; + input = { + sensitivity = if config.liminalOS.formFactor == "laptop" then "0.0" else "-0.65"; + }; + }; + }; + + wayland.windowManager.hyprland.settings.input.touchpad = + lib.mkIf (config.liminalOS.formFactor == "laptop") + { + natural_scroll = true; + disable_while_typing = true; + clickfinger_behavior = true; + tap-to-click = false; + scroll_factor = 0.15; + }; + + services.hyprpaper.enable = true; + + programs.wlogout.enable = true; + + programs.rofi = { + enable = true; + package = pkgs.rofi-wayland; + # theme = "gruvbox-dark"; + terminal = "${pkgs.kitty}/bin/kitty"; + extraConfig = { + modi = "window,drun,ssh,combi,filebrowser,recursivebrowser"; + display-drun = " 󰘧 "; + combi-modi = "window,drun,ssh"; + run-shell-command = "{terminal} -e {cmd}"; + sidebar-mode = true; + background-color = "transparent"; + sorting = "fuzzy"; + }; + }; + + programs.hyprlock = lib.mkIf cfg.screenlocker.enable { + enable = true; + settings = { + general = { + hide_cursor = true; + grace = 1; + }; + background = { + monitor = ""; + path = "/tmp/__hyprlock-monitor-screenshot.png"; + blur_passes = 3; + blur_size = 7; + noise = 0.0117; + contrast = 0.8916; + brightness = 0.8172; + vibrancy = 0.1696; + vibrancy_darkness = 0.0; + }; + input-field = { + monitor = ""; + size = "200, 50"; + outline_thickness = 3; + dots_size = 0.33; + dots_spacing = 0.15; + dots_center = false; + dots_rounding = -1; + outer_color = "rgb(151515)"; + inner_color = "rgb(200, 200, 200)"; + font_color = "rgb(10, 10, 10)"; + fade_on_empty = true; + fade_timeout = 1000; + placeholder_text = "Input Password..."; + hide_input = false; + rounding = -1; + check_color = "rgb(204, 136, 34)"; + fail_color = "rgb(204, 34, 34)"; + fail_text = "$FAIL ($ATTEMPTS)"; + fail_timeout = 2000; + fail_transition = 300; + capslock_color = -1; + numlock_color = -1; + bothlock_color = -1; + invert_numlock = false; + swap_font_color = false; + + position = "0, -20"; + halign = "center"; + valign = "center"; + }; + }; + }; + + services.hypridle = lib.mkIf cfg.idleDaemon.enable { + enable = true; + settings = { + general = { + lock_cmd = "pidof hyprlock || ${pkgs.grim}/bin/grim -o ${config.programs.hyprlock.settings.background.monitor} /tmp/__hyprlock-monitor-screenshot.png && ${pkgs.hyprlock}/bin/hyprlock"; # avoid starting multiple hyprlock instances. + before_sleep_cmd = "loginctl lock-session"; # lock before suspend. + after_sleep_cmd = "hyprctl dispatch dpms on"; # to avoid having to press a key twice to turn on the display. + }; + listener = [ + { + timeout = 1500; + on-timeout = "loginctl lock-session"; + } + { + timeout = 330; # 5.5min + on-timeout = "hyprctl dispatch dpms off"; # screen off when timeout has passed + on-resume = "hyprctl dispatch dpms on"; # screen on when activity is detected after timeout has fired. + } + { + timeout = 1800; + on-timeout = "systemctl suspend"; + } + ]; + }; + }; + }; +} diff --git a/hm/modules/linux/desktop-environment/hyprland/windowrulev2.nix b/hm/modules/linux/desktop-environment/hyprland/windowrulev2.nix new file mode 100644 index 0000000..d366ae7 --- /dev/null +++ b/hm/modules/linux/desktop-environment/hyprland/windowrulev2.nix @@ -0,0 +1,86 @@ +[ + "opacity 0.90 0.90,class:^(librewolf)$" + "opacity 0.90 0.90,class:^(floorp)$" + "opacity 0.90 0.90,class:^(zen-alpha)$" + "opacity 0.90 0.90,class:^(zen-beta)$" + "opacity 0.90 0.90,class:^(Brave-browser)$" + "opacity 0.80 0.80,class:^(Steam)$" + "opacity 0.80 0.80,class:^(steam)$" + "opacity 0.80 0.80,class:^(steamwebhelper)$" + "opacity 0.80 0.80,class:^(Spotify)$" + "opacity 0.80 0.80,initialTitle:^(Spotify Premium)$" + "opacity 0.80 0.80,initialTitle:^(Spotify Free)$" + "opacity 0.80 0.80,class:^(code-oss)$" + "opacity 0.80 0.80,class:^(Code)$" + "opacity 0.80 0.80,class:^(code-url-handler)$" + "opacity 0.80 0.80,class:^(code-insiders-url-handler)$" + "opacity 0.80 0.80,class:^(kitty)$" + "opacity 0.80 0.80,class:^(neovide)$" + "opacity 0.80 0.80,class:^(org.kde.dolphin)$" + "opacity 0.80 0.80,class:^(thunar)$" + "opacity 0.80 0.80,class:^(org.kde.ark)$" + "opacity 0.80 0.80,class:^(nwg-look)$" + "opacity 0.80 0.80,class:^(qt5ct)$" + "opacity 0.80 0.80,class:^(qt6ct)$" + "opacity 0.80 0.80,class:^(kvantummanager)$" + "opacity 0.80 0.80,class:^(waypaper)$" + "opacity 0.80 0.80,class:^(org.pulseaudio.pavucontrol)$" + "opacity 0.80 0.80,class:^(com.github.wwmm.easyeffects)$" + "opacity 0.80 0.80,class:^(thunderbird)$" + + "opacity 0.90 0.90,class:^(com.github.rafostar.Clapper)$ # Clapper-Gtk" + "opacity 0.80 0.80,class:^(com.github.tchx84.Flatseal)$ # Flatseal-Gtk" + "opacity 0.80 0.80,class:^(hu.kramo.Cartridges)$ # Cartridges-Gtk" + "opacity 0.80 0.80,class:^(com.obsproject.Studio)$ # Obs-Qt" + "opacity 0.80 0.80,class:^(gnome-boxes)$ # Boxes-Gtk" + "opacity 0.80 0.80,class:^(discord)$ # Discord-Electron" + "opacity 0.80 0.80,class:^(vesktop)$ # Vesktop-Electron" + "opacity 0.80 0.80,class:^(ArmCord)$ # ArmCord-Electron" + "opacity 0.80 0.80,class:^(app.drey.Warp)$ # Warp-Gtk" + "opacity 0.80 0.80,class:^(net.davidotek.pupgui2)$ # ProtonUp-Qt" + "opacity 0.80 0.80,class:^(yad)$ # Protontricks-Gtk" + "opacity 0.80 0.80,class:^(signal)$ # Signal-Gtk" + "opacity 0.80 0.80,class:^(io.github.alainm23.planify)$ # planify-Gtk" + "opacity 0.80 0.80,class:^(io.gitlab.theevilskeleton.Upscaler)$ # Upscaler-Gtk" + "opacity 0.80 0.80,class:^(com.github.unrud.VideoDownloader)$ # VideoDownloader-Gtk" + "opacity 0.80 0.80,class:^(lutris)$ # Lutris game launcher" + + "opacity 0.80 0.70,class:^(pavucontrol)$" + "opacity 0.80 0.70,class:^(blueman-manager)$" + "opacity 0.80 0.70,class:^(nm-applet)$" + "opacity 0.80 0.70,class:^(nm-connection-editor)$" + "opacity 0.80 0.70,class:^(org.kde.polkit-kde-authentication-agent-1)$" + + "float,class:^(org.kde.dolphin)$,title:^(Progress Dialog — Dolphin)$" + "float,class:^(org.kde.dolphin)$,title:^(Copying — Dolphin)$" + "float,title:^(Picture-in-Picture)$" + "float,class:^(librewolf)$,title:^(Library)$" + "float,class:^(floorp)$,title:^(Library)$" + "float,class:^(zen-alpha)$,title:^(Library)$" + "float,title:^(Extension: (Bitwarden Password Manager))$" + "float,class:^(vlc)$" + "float,class:^(kvantummanager)$" + "float,class:^(qt5ct)$" + "float,class:^(qt6ct)$" + "float,class:^(nwg-look)$" + "float,class:^(org.kde.ark)$" + "float,class:^(org.pulseaudio.pavucontrol)$" + "float,class:^(com.github.rafostar.Clapper)$ # Clapper-Gtk" + "float,class:^(app.drey.Warp)$ # Warp-Gtk" + "float,class:^(net.davidotek.pupgui2)$ # ProtonUp-Qt" + "float,class:^(yad)$ # Protontricks-Gtk" + "float,class:^(eog)$ # Imageviewer-Gtk" + "float,class:^(io.github.alainm23.planify)$ # planify-Gtk" + "float,class:^(io.gitlab.theevilskeleton.Upscaler)$ # Upscaler-Gtk" + "float,class:^(com.github.unrud.VideoDownloader)$ # VideoDownloader-Gkk" + "float,class:^(blueman-manager)$" + "float,class:^(nm-applet)$" + "float,class:^(nm-connection-editor)$" + "float,class:^(org.kde.polkit-kde-authentication-agent-1)$" + "opacity 0.80 0.80,class:^(org.freedesktop.impl.portal.desktop.gtk)$" + "opacity 0.80 0.80,class:^(org.freedesktop.impl.portal.desktop.hyprland)$" + + "size 50% 50%,class:^(org.pulseaudio.pavucontrol)" + + "stayfocused, class:^(pinentry-)" # fix pinentry losing focus +] diff --git a/hm/modules/linux/desktop-environment/swaync.nix b/hm/modules/linux/desktop-environment/swaync.nix new file mode 100644 index 0000000..73b1b3e --- /dev/null +++ b/hm/modules/linux/desktop-environment/swaync.nix @@ -0,0 +1,325 @@ +{ config, lib, ... }: +let + cfg = config.liminalOS.desktop.swaync; +in +{ + options.liminalOS.desktop.swaync = { + enable = lib.mkOption { + type = lib.types.bool; + default = config.liminalOS.desktop.enable; + description = '' + Whether to enable the swaync notification center and daemon. + ''; + }; + }; + + config = lib.mkIf cfg.enable { + services.swaync.enable = true; + services.swaync.settings = { + positionX = "right"; + positionY = "top"; + control-center-margin-top = 10; + control-center-margin-bottom = 10; + control-center-margin-right = 10; + control-center-margin-left = 10; + notification-icon-size = 64; + notification-body-image-height = 100; + notification-body-image-width = 200; + timeout = 10; + timeout-low = 5; + timeout-critical = 0; + fit-to-screen = false; + control-center-width = 500; + control-center-height = 800; + notification-window-width = 500; + keyboard-shortcuts = true; + image-visibility = "when-available"; + transition-time = 200; + hide-on-clear = false; + hide-on-action = true; + script-fail-notify = true; + widgets = [ + "title" + "mpris" + "volume" + "backlight" + "dnd" + "notifications" + ]; + widget-config = { + title = { + text = "Mission Control"; + clear-all-button = "true"; + button-text = " All Systems Go"; + }; + dnd = { + text = "Do Not Disturb"; + }; + label = { + max-lines = 1; + text = "Mission Control"; + }; + mpris = { + image-size = 96; + image-radius = 7; + }; + volume = { + label = "󰕾"; + }; + backlight = { + label = "󰃟"; + }; + }; + }; + + home.file.".config/swaync/style.css".text = '' + * { + font-family: ${config.stylix.fonts.monospace.name}; + } + .control-center .notification-row:focus, + .control-center .notification-row:hover { + background: #${config.lib.stylix.colors.base00} + } + .notification-row { + outline: none; + margin: 10px; + padding: 0; + } + .notification { + background: transparent; + padding: 0; + margin: 0px; + opacity: 0.75; + } + .notification-content { + background: #${config.lib.stylix.colors.base00}; + padding: 10px; + border-radius: 5px; + border: 2px solid #${config.lib.stylix.colors.base05}; + margin: 0; + } + .notification-default-action { + margin: 0; + padding: 0; + border-radius: 5px; + } + .close-button { + background: #${config.lib.stylix.colors.base08}; + color: #${config.lib.stylix.colors.base00}; + text-shadow: none; + padding: 0; + border-radius: 5px; + margin-top: 5px; + margin-right: 5px; + } + .close-button:hover { + box-shadow: none; + background: #${config.lib.stylix.colors.base0D}; + transition: all .15s ease-in-out; + border: none + } + .notification-action { + border: 2px solid #${config.lib.stylix.colors.base0D}; + border-top: none; + border-radius: 5px; + } + .notification-default-action:hover, + .notification-action:hover { + color: #${config.lib.stylix.colors.base0B}; + background: #${config.lib.stylix.colors.base0B} + } + .notification-default-action { + border-radius: 5px; + margin: 0px; + } + .notification-default-action:not(:only-child) { + border-bottom-left-radius: 7px; + border-bottom-right-radius: 7px + } + .notification-action:first-child { + border-bottom-left-radius: 10px; + background: #${config.lib.stylix.colors.base00} + } + .notification-action:last-child { + border-bottom-right-radius: 10px; + background: #${config.lib.stylix.colors.base00} + } + .inline-reply { + margin-top: 8px + } + .inline-reply-entry { + background: #${config.lib.stylix.colors.base00}; + color: #${config.lib.stylix.colors.base05}; + caret-color: #${config.lib.stylix.colors.base05}; + border: 1px solid #${config.lib.stylix.colors.base09}; + border-radius: 5px + } + .inline-reply-button { + margin-left: 4px; + background: #${config.lib.stylix.colors.base00}; + border: 1px solid #${config.lib.stylix.colors.base09}; + border-radius: 5px; + color: #${config.lib.stylix.colors.base05} + } + .inline-reply-button:disabled { + background: initial; + color: #${config.lib.stylix.colors.base03}; + border: 1px solid transparent + } + .inline-reply-button:hover { + background: #${config.lib.stylix.colors.base00} + } + .body-image { + margin-top: 6px; + background-color: #${config.lib.stylix.colors.base05}; + border-radius: 5px + } + .summary { + font-size: 16px; + font-weight: 700; + background: transparent; + color: rgba(158, 206, 106, 1); + text-shadow: none + } + .time { + font-size: 16px; + font-weight: 700; + background: transparent; + color: #${config.lib.stylix.colors.base05}; + text-shadow: none; + margin-right: 18px + } + .body { + font-size: 15px; + font-weight: 400; + background: transparent; + color: #${config.lib.stylix.colors.base05}; + text-shadow: none + } + .control-center { + background: #${config.lib.stylix.colors.base00}; + border: 2px solid #${config.lib.stylix.colors.base0C}; + border-radius: 5px; + opacity: 0.85; + } + .control-center-list { + background: transparent + } + .control-center-list-placeholder { + opacity: .5 + } + .floating-notifications { + background: transparent + } + .blank-window { + background: alpha(black, 0) + } + .widget-title { + color: #${config.lib.stylix.colors.base0B}; + background: #${config.lib.stylix.colors.base00}; + padding: 5px 10px; + margin: 10px 10px 5px 10px; + font-size: 1.5rem; + border-radius: 5px; + } + .widget-title>button { + font-size: 1rem; + color: #${config.lib.stylix.colors.base05}; + text-shadow: none; + background: #${config.lib.stylix.colors.base00}; + box-shadow: none; + border-radius: 5px; + } + .widget-title>button:hover { + background: #${config.lib.stylix.colors.base08}; + color: #${config.lib.stylix.colors.base00}; + } + .widget-dnd { + background: #${config.lib.stylix.colors.base00}; + padding: 5px 10px; + margin: 10px 10px 5px 10px; + border-radius: 5px; + font-size: large; + color: #${config.lib.stylix.colors.base0B}; + } + .widget-dnd>switch { + border-radius: 5px; + /* border: 1px solid #${config.lib.stylix.colors.base0B}; */ + background: #${config.lib.stylix.colors.base0B}; + } + .widget-dnd>switch:checked { + background: #${config.lib.stylix.colors.base08}; + border: 1px solid #${config.lib.stylix.colors.base08}; + } + .widget-dnd>switch slider { + background: #${config.lib.stylix.colors.base00}; + border-radius: 5px + } + .widget-dnd>switch:checked slider { + background: #${config.lib.stylix.colors.base00}; + border-radius: 5px + } + .widget-label { + margin: 10px 10px 5px 10px; + } + .widget-label>label { + font-size: 1rem; + color: #${config.lib.stylix.colors.base05}; + } + .widget-mpris { + color: #${config.lib.stylix.colors.base05}; + padding: 5px 10px; + margin: 10px 10px 5px 10px; + border-radius: 5px; + } + .widget-mpris > box > button { + border-radius: 5px; + } + .widget-mpris-player { + padding: 5px 10px; + margin: 10px + } + .widget-mpris-title { + font-weight: 700; + font-size: 1.25rem + } + .widget-mpris-subtitle { + font-size: 1.1rem + } + .widget-menubar>box>.menu-button-bar>button { + border: none; + background: transparent + } + .topbar-buttons>button { + border: none; + background: transparent + } + .widget-volume { + background: #${config.lib.stylix.colors.base01}; + padding: 5px; + margin: 10px 10px 5px 10px; + border-radius: 5px; + font-size: x-large; + color: #${config.lib.stylix.colors.base05}; + } + .widget-volume>box>button { + background: #${config.lib.stylix.colors.base0B}; + border: none + } + .per-app-volume { + background-color: #${config.lib.stylix.colors.base00}; + padding: 4px 8px 8px; + margin: 0 8px 8px; + border-radius: 5px; + } + .widget-backlight { + background: #${config.lib.stylix.colors.base01}; + padding: 5px; + margin: 10px 10px 5px 10px; + border-radius: 5px; + font-size: x-large; + color: #${config.lib.stylix.colors.base05} + } + ''; + }; +} diff --git a/hm/modules/linux/desktop-environment/waybar/default.nix b/hm/modules/linux/desktop-environment/waybar/default.nix new file mode 100644 index 0000000..66aee10 --- /dev/null +++ b/hm/modules/linux/desktop-environment/waybar/default.nix @@ -0,0 +1,208 @@ +{ + pkgs, + osConfig, + config, + lib, + ... +}: +let + cfg = config.liminalOS.desktop.waybar; +in +{ + options.liminalOS.desktop.waybar = { + enable = lib.mkOption { + type = lib.types.bool; + default = config.liminalOS.desktop.enable; + description = '' + Whether to enable Waybar and the liminalOS rice. + ''; + }; + }; + + config = { + programs.waybar = lib.mkIf cfg.enable { + enable = true; + style = ./style.css; + systemd.enable = true; + settings = { + mainBar = { + name = "bar0"; + + layer = "top"; + position = "top"; + + height = 28; + + "margin" = "5px 10px 0px 10px"; + "spacing" = 10; + + "mode" = "top"; + + reload_style_on_change = true; + + modules-left = [ + "hyprland/workspaces" + "hyprland/window" + ]; + modules-right = [ + "tray" + "idle_inhibitor" + "backlight" + "wireplumber" + "network" + "battery" + "disk" + "memory" + "cpu" + "temperature" + "clock" + "custom/notification" + ]; + + idle_inhibitor = { + format = "{icon}"; + format-icons = { + activated = "󰛊 "; + deactivated = "󰾫 "; + }; + }; + + network = { + format = "{ifname}"; + format-wifi = "{icon}{essid}"; + format-ethernet = " {essid}"; + format-disconnected = "󰤯 Disconnected"; + format-icons = [ + "󰤟 " + "󰤢 " + "󰤨 " + ]; + tooltip-format = " {bandwidthUpBits} |  {bandwidthDownBits}"; + tooltip-format-wifi = " {bandwidthUpBits} |  {bandwidthDownBits} | 󱄙 {signalStrength}"; + }; + + backlight = { + interval = 2; + format = "󰖨 {percent}%"; + on-scroll-up = "${pkgs.brightnessctl}/bin/brightnessctl set +4"; + on-scroll-down = "${pkgs.brightnessctl}/bin/brightnessctl set 4-"; + }; + + wireplumber = { + format = "{icon} {volume}%"; + format-muted = "󰝟 "; + on-click = "pamixer -t"; + on-scroll-up = "${pkgs.pamixer}/bin/pamixer set 5%+"; + on-scroll-down = "${pkgs.pamixer}/bin/pamixer set 5%-"; + format-icons = [ + "" + "" + "" + "" + "" + ]; + }; + + battery = { + interval = 10; + format = "{icon} {capacity}%"; + format-icons = [ + "󰂎" + "󰁺" + "󰁻" + "󰁼" + "󰁽" + "󰁾" + "󰁿" + "󰂀" + "󰂁" + "󰂂" + "󰁹" + ]; + tooltip = true; + tooltip-format = "{timeTo}"; + }; + + disk = { + intervel = 30; + format = "󰋊 {percentage_used}%"; + tooltip-format = "{used} used out of {total} on \"{path}\" ({percentage_used}%)"; + }; + + memory = { + interval = 10; + format = " {used}"; + tooltip-format = "{used}GiB used of {total}GiB ({percentage}%)"; + }; + + cpu = { + interval = 10; + format = " {usage}%"; + }; + + temperature = { + interval = 10; + }; + + clock = { + interval = 1; + format = "{:%H:%M:%S}"; + }; + + "custom/notification" = lib.mkIf config.liminalOS.desktop.swaync.enable { + tooltip = false; + format = "{icon}"; + format-icons = { + notification = ""; + none = " "; + dnd-notification = ""; + dnd-none = " "; + }; + return-type = "json"; + exec = "${pkgs.swaynotificationcenter}/bin/swaync-client -swb"; + on-click = "sleep 0.1 && ${pkgs.swaynotificationcenter}/bin/swaync-client -t -sw"; + on-click-right = "sleep 0.1 && ${pkgs.swaynotificationcenter}/bin/swaync-client -d -sw"; + escape = true; + }; + + "hyprland/workspaces" = { + show-special = true; + persistent-workspaces = { + "*" = [ + 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + ]; + }; + format = "{icon}"; + format-icons = { + active = ""; + empty = ""; + default = ""; + urgent = ""; + special = "󰠱"; + }; + }; + + "hyprland/window" = { + icon = true; + icon-size = 20; + max-length = 50; + rewrite = { + "(.*) — LibreWolf" = "$1"; + "(.*) — Zen Browser" = "$1"; + "^$" = "👾"; + }; + }; + }; + }; + }; + }; +} diff --git a/hm/modules/linux/desktop-environment/waybar/desktop/default.nix b/hm/modules/linux/desktop-environment/waybar/desktop/default.nix new file mode 100644 index 0000000..731f793 --- /dev/null +++ b/hm/modules/linux/desktop-environment/waybar/desktop/default.nix @@ -0,0 +1,171 @@ +{ + # home.file.".config/waybar/config".source = ./config.jsonc; + programs.waybar = { + enable = true; + style = ./style.css; + systemd.enable = true; + settings = { + mainBar = { + name = "bar0"; + + layer = "top"; + position = "top"; + + height = 28; + # "width" = 1920; + + "margin" = "5px 10px 0px 10px"; + "spacing" = 10; + + "mode" = "top"; + # "exclusive" = true; + + # "output" = "eDP-1"; + + reload_style_on_change = true; + + modules-left = [ "hyprland/workspaces" ]; + modules-center = [ "hyprland/window" ]; + modules-right = [ + "tray" + "idle_inhibitor" + "backlight" + "wireplumber" + "network" + "battery" + "disk" + "memory" + "cpu" + "temperature" + "clock" + ]; + + idle_inhibitor = { + format = "{icon}"; + format-icons = { + activated = "󰛊 "; + deactivated = "󰾫 "; + }; + }; + + network = { + format = "{ifname}"; + format-wifi = "{icon}{essid}"; + format-ethernet = " {essid}"; + format-disconnected = "󰤯 Disconnected"; + format-icons = [ + "󰤟 " + "󰤢 " + "󰤨 " + ]; + tooltip-format = " {bandwidthUpBits} |  {bandwidthDownBits}"; + tooltip-format-wifi = " {bandwidthUpBits} |  {bandwidthDownBits} | 󱄙 {signalStrength}"; + }; + + backlight = { + interval = 2; + format = "󰖨 {percent}%"; + on-scroll-up = "brightnessctl set +4"; + on-scroll-down = "brightnessctl set 4-"; + }; + + wireplumber = { + format = "{icon} {volume}%"; + format-muted = "󰝟 "; + on-click = "pamixer -t"; + on-scroll-up = "pamixer set 5%+"; + on-scroll-down = "pamixer set 5%-"; + format-icons = [ + "" + "" + "" + "" + "" + ]; + }; + + battery = { + interval = 10; + format = "{icon}{capacity}%"; + format-icons = [ + "󰂎" + "󰁺" + "󰁻" + "󰁼" + "󰁽" + "󰁾" + "󰁿" + "󰂀" + "󰂁" + "󰂂" + "󰁹" + ]; + tooltip = true; + tooltip-format = "{timeTo}"; + }; + + disk = { + intervel = 30; + format = "󰋊 {percentage_used}%"; + tooltip-format = "{used} used out of {total} on \"{path}\" ({percentage_used}%)"; + }; + + memory = { + interval = 10; + format = " {used}"; + tooltip-format = "{used}GiB used of {total}GiB ({percentage}%)"; + }; + + cpu = { + interval = 10; + format = " {usage}%"; + }; + + temperature = { + interval = 10; + }; + + clock = { + interval = 1; + format = "{:%H:%M:%S}"; + }; + + "hyprland/workspaces" = { + show-special = true; + persistent-workspaces = { + "*" = [ + 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + ]; + }; + format = "{icon}"; + format-icons = { + active = ""; + empty = ""; + default = ""; + urgent = ""; + special = "󰠱"; + }; + }; + "hyprland/window" = { + icon = true; + icon-size = 20; + max-length = 50; + rewrite = { + "(.*) — Ablaze Floorp" = "$1"; + "(.*) — Zen Browser" = "$1"; + "^$" = "👾"; + }; + }; + }; + }; + }; +} diff --git a/hm/modules/linux/desktop-environment/waybar/desktop/style.css b/hm/modules/linux/desktop-environment/waybar/desktop/style.css new file mode 100644 index 0000000..0307cdf --- /dev/null +++ b/hm/modules/linux/desktop-environment/waybar/desktop/style.css @@ -0,0 +1,71 @@ +window#waybar { + font-family: "CaskaydiaCove Nerd Font"; + background-color: rgba(0,0,0,0); + font-size: 0.8rem; + border-radius: 0.5rem; +} + +.modules-left, .modules-center { + opacity: 1; + background: linear-gradient(45deg, rgb(214, 39, 200), rgb(5, 83, 252)); + border-radius: 0.5rem; + padding: 2px; +} + +.modules-right { + opacity: 1; + background-color: rgba(0,0,0,0.5); + border-radius: 0.5rem; + padding: 2px 2px 2px 10px +} + +/* label.module { + margin-left: -1px; +} */ + +#workspaces { + background-color: rgba(0,0,0,0.5); + border-radius: 0.5rem; + padding: 0 2px; +} + +#workspaces button { + font-size: 0.6rem; + padding: 0 0.3rem 0 0; +} + +#window { + background-color: rgba(0,0,0,0.5); + border-radius: 0.5rem; + padding: 2px 5px; +} + +#clock { + font-weight: bolder; + border-radius: 0.5rem; + padding: 0 3px 0 0; +} + +#battery { + color: lightgreen; +} + +#memory { + color: lightpink; +} + +#disk { + color: lightskyblue; +} + +#cpu { + color: lightgoldenrodyellow; +} + +#temperature { + color: lightslategray; +} + +#network { + color: lightsteelblue; +} diff --git a/hm/modules/linux/desktop-environment/waybar/style.css b/hm/modules/linux/desktop-environment/waybar/style.css new file mode 100644 index 0000000..9a4ef6e --- /dev/null +++ b/hm/modules/linux/desktop-environment/waybar/style.css @@ -0,0 +1,78 @@ +window#waybar { + font-family: "CaskaydiaCove Nerd Font"; + background-color: rgba(0,0,0,0); + font-size: 0.8rem; + border-radius: 0.5rem; + color: #cccccc; +} + +.modules-left { + opacity: 1; + background: linear-gradient(45deg, rgb(214, 39, 200), rgb(5, 83, 252)); + border-radius: 0.5rem; + padding: 2px; +} + +.modules-center { + opacity: 0; +} + +.modules-right { + opacity: 1; + background-color: rgba(0,0,0,0.5); + border-radius: 0.5rem; + padding: 2px 2px 2px 10px +} + +/* label.module { + margin-left: -1px; +} */ + +#workspaces { + background-color: rgba(0,0,0,0.5); + border-radius: 0.5rem; + padding: 0 2px; +} + +#workspaces button { + font-size: 0.6rem; + padding: 0 0.3rem 0 0; + border: #cccccc; + color: #cccccc; +} + +#window { + background-color: rgba(0,0,0,0.5); + border-radius: 0.5rem; + padding: 2px 5px; +} + +#clock { + font-weight: bolder; + border-radius: 0.5rem; + padding: 0 3px 0 0; +} + +#battery { + color: lightgreen; +} + +#memory { + color: lightpink; +} + +#disk { + color: lightskyblue; +} + +#cpu { + color: lightgoldenrodyellow; +} + +#temperature { + color: lightslategray; +} + +#network { + color: lightsteelblue; +} diff --git a/hm/modules/linux/platform-tweaks/default.nix b/hm/modules/linux/platform-tweaks/default.nix new file mode 100644 index 0000000..f3ab7e4 --- /dev/null +++ b/hm/modules/linux/platform-tweaks/default.nix @@ -0,0 +1,35 @@ +{ + inputs, + lib, + config, + osConfig, + ... +}: +let + cfg = config.liminalOS; +in +{ + options.liminalOS = { + formFactor = lib.mkOption { + type = lib.types.nullOr ( + lib.types.enum [ + "laptop" + "desktop" + ] + ); + default = osConfig.liminalOS.formFactor; + description = '' + Form factor of the machine. Adjusts some UI features. Inherited from system configuration liminalOS.formFactor if set, otherwise you must set it here. + ''; + }; + }; + + config = { + assertions = [ + { + assertion = cfg.formFactor != null; + message = "You must set liminalOS.formFactor either in the home-manager configuration for the user or in the OS configuration for the system!"; + } + ]; + }; +} diff --git a/hm/modules/linux/programs/bulk-programs.nix b/hm/modules/linux/programs/bulk-programs.nix new file mode 100644 index 0000000..901359e --- /dev/null +++ b/hm/modules/linux/programs/bulk-programs.nix @@ -0,0 +1,88 @@ +{ + config, + pkgs, + lib, + ... +}: +let + cfg = config.liminalOS.programs.bulk; + mkEnableOption' = + desc: + lib.mkOption { + type = lib.types.bool; + default = cfg.enable; + description = '' + Whether to enable ${desc}. + ''; + }; +in +{ + options.liminalOS.programs.bulk = { + enable = lib.mkOption { + type = lib.types.bool; + default = config.liminalOS.programs.enable; + description = '' + Whether to enable installation of various useful programs in the system. + ''; + }; + archiveTools.enable = mkEnableOption' "archive tools"; + instantMessaging.enable = mkEnableOption' "instant messengers"; + nixCliTools.enable = mkEnableOption' "Nix CLI helper tools and utilities"; + desktopApps.enable = mkEnableOption' "desktop applications like mail and file explorer"; + misc.enable = mkEnableOption' "assorted uncategorized utilities"; + }; + + config = lib.mkIf cfg.enable { + home.packages = + lib.optionals cfg.archiveTools.enable ( + with pkgs; + [ + zip + xz + unzip + p7zip + ] + ) + ++ lib.optionals cfg.nixCliTools.enable ( + with pkgs; + [ + nurl + nix-output-monitor + ] + ) + ++ lib.optionals cfg.misc.enable ( + with pkgs; + [ + ffmpeg + + pciutils # lspci + usbutils # lsusb + + ani-cli + manga-tui + + hledger + ] + ) + ++ lib.optionals cfg.instantMessaging.enable ( + with pkgs; + [ + vesktop + signal-desktop + iamb + ] + ++ lib.optionals cfg.desktopApps.enable ( + with pkgs; + [ + thunderbird + xfce.thunar + ] + ++ lib.optionals pkgs.stdenv.targetPlatform.isx86_64 [ + bitwarden-desktop + sbctl + ] + ++ lib.optionals pkgs.stdenv.targetPlatform.isAarch64 [ ] + ) + ); + }; +} diff --git a/hm/modules/linux/programs/default.nix b/hm/modules/linux/programs/default.nix new file mode 100644 index 0000000..961a43f --- /dev/null +++ b/hm/modules/linux/programs/default.nix @@ -0,0 +1,95 @@ +{ + pkgs, + inputs, + config, + lib, + ... +}: +let + cfg = config.liminalOS.programs; +in +{ + imports = [ + ./bulk-programs.nix + ]; + + options.liminalOS.programs = { + enable = lib.mkOption { + type = lib.types.bool; + default = true; + description = '' + Whether to set up many default desktop programs. + ''; + }; + terminal.enable = lib.mkOption { + type = lib.types.bool; + default = cfg.enable; + description = '' + Whether to set up kitty terminal. + ''; + }; + zen.enable = lib.mkOption { + type = lib.types.bool; + default = cfg.enable; + description = '' + Whether to install Zen Browser and set it as the default browser. + ''; + }; + }; + + config = lib.mkIf cfg.enable { + programs.kitty = lib.mkIf cfg.terminal.enable { + enable = true; + font.name = "CaskaydiaCove Nerd Font"; + shellIntegration.enableFishIntegration = true; + shellIntegration.enableBashIntegration = true; + settings = { + font_size = 11; + window_padding_width = "8 8"; + confirm_os_window_close = -1; + enable_audio_bell = "no"; + background_opacity = pkgs.lib.mkForce "0.8"; + allow_remote_control = "yes"; + listen_on = "unix:/tmp/kitty"; + scrollback_pager = ''nvim --noplugin -c "set signcolumn=no showtabline=0" -c "silent write! /tmp/kitty_scrollback_buffer | te cat /tmp/kitty_scrollback_buffer - "''; + cursor = pkgs.lib.mkForce "#c0caf5"; + cursor_text_color = pkgs.lib.mkForce "#1a1b26"; + cursor_trail = 3; + }; + keybindings = { + "kitty_mod+h" = "show_scrollback"; + }; + }; + + programs.spotify-player.enable = true; + + programs.neovide = { + enable = false; + settings = { + font = { + normal = [ "CaskaydiaCove Nerd Font" ]; + size = if config.liminalOS.formFactor == "laptop" then 11 else 13; + }; + }; + }; + + xdg.mimeApps = lib.mkIf cfg.zen.enable { + enable = true; + defaultApplications = { + "text/html" = [ "zen.desktop" ]; + "x-scheme-handler/http" = [ "zen.desktop" ]; + "x-scheme-handler/https" = [ "zen.desktop" ]; + "x-scheme-handler/about" = [ "zen.desktop" ]; + "x-scheme-handler/unknown" = [ "zen.desktop" ]; + }; + }; + + home.packages = lib.mkIf cfg.zen.enable [ + inputs.zen-browser.packages.${pkgs.system}.default + ]; + + home.sessionVariables.DEFAULT_BROWSER = lib.mkIf cfg.zen.enable "${ + inputs.zen-browser.packages.${pkgs.system}.default + }/bin/zen"; + }; +} diff --git a/hm/modules/linux/spicetify/default.nix b/hm/modules/linux/spicetify/default.nix new file mode 100644 index 0000000..985397e --- /dev/null +++ b/hm/modules/linux/spicetify/default.nix @@ -0,0 +1,31 @@ +{ + inputs, + pkgs, + config, + osConfig, + lib, + ... +}: +let + spicepkgs = inputs.spicetify.legacyPackages.${pkgs.system}; +in +{ + imports = [ + inputs.spicetify.homeManagerModules.default + ]; + + config = lib.mkIf (config.liminalOS.programs.enable && osConfig.liminalOS.config.allowUnfree) { + programs.spicetify = { + enable = true; + # theme = spicepkgs.themes.dribbblish; + # colorScheme = "rosepine"; + enabledExtensions = with spicepkgs.extensions; [ + lastfm + fullAppDisplayMod + ]; + enabledCustomApps = with spicepkgs.apps; [ + lyricsPlus + ]; + }; + }; +} diff --git a/hm/modules/linux/theming/default.nix b/hm/modules/linux/theming/default.nix new file mode 100644 index 0000000..7d3539e --- /dev/null +++ b/hm/modules/linux/theming/default.nix @@ -0,0 +1,14 @@ +{ pkgs, ... }: +{ + imports = [ ./stylix.nix ]; + # gtk = { + # enable = true; + # cursorTheme = { + # name = "Bibata-Modern-Ice"; + # size = 26; + # }; + # iconTheme = { + # name = "Papirus-Dark"; + # }; + # }; +} diff --git a/hm/modules/linux/theming/stylix.nix b/hm/modules/linux/theming/stylix.nix new file mode 100644 index 0000000..94ee4a9 --- /dev/null +++ b/hm/modules/linux/theming/stylix.nix @@ -0,0 +1,13 @@ +{ osConfig, lib, ... }: +{ + config.stylix.targets = lib.mkIf osConfig.liminalOS.theming.enable { + waybar.enable = false; + kitty.variant256Colors = true; + neovim.enable = false; + kde.enable = true; + gnome.enable = true; + swaync.enable = false; + hyprlock.enable = false; + hyprland.enable = false; + }; +} diff --git a/hm/modules/linux/var/easyeffects/default.nix b/hm/modules/linux/var/easyeffects/default.nix new file mode 100644 index 0000000..00764d3 --- /dev/null +++ b/hm/modules/linux/var/easyeffects/default.nix @@ -0,0 +1,35 @@ +{ + config, + lib, + osConfig, + ... +}: +let + cfg = config.liminalOS.utils.easyeffects; +in +{ + options.liminalOS.utils.easyeffects = { + enable = lib.mkOption { + type = lib.types.bool; + default = true; + description = '' + Whether to enable EasyEffects. + ''; + }; + }; + + config = lib.mkIf cfg.enable { + services.easyeffects.enable = true; + + home.file = lib.mkIf (osConfig.liminalOS.flakeLocation != null) { + ".config/easyeffects/output" = { + source = config.lib.file.mkOutOfStoreSymlink "${osConfig.liminalOS.flakeLocation}/hm/modules/linux/var/easyeffects/output"; + recursive = true; + }; + ".config/easyeffects/input" = { + source = config.lib.file.mkOutOfStoreSymlink "${osConfig.liminalOS.flakeLocation}/hm/modules/linux/var/easyeffects/input"; + recursive = true; + }; + }; + }; +} diff --git a/hm/modules/linux/var/easyeffects/input/Default.json b/hm/modules/linux/var/easyeffects/input/Default.json new file mode 100644 index 0000000..60b5635 --- /dev/null +++ b/hm/modules/linux/var/easyeffects/input/Default.json @@ -0,0 +1,75 @@ +{ + "input": { + "blocklist": [], + "compressor#0": { + "attack": 20.0, + "boost-amount": 6.0, + "boost-threshold": -72.0, + "bypass": true, + "dry": -100.0, + "hpf-frequency": 10.0, + "hpf-mode": "off", + "input-gain": 0.0, + "knee": -6.0, + "lpf-frequency": 20000.0, + "lpf-mode": "off", + "makeup": 0.0, + "mode": "Downward", + "output-gain": 0.0, + "ratio": 4.0, + "release": 100.0, + "release-threshold": -100.0, + "sidechain": { + "lookahead": 0.0, + "mode": "RMS", + "preamp": 0.0, + "reactivity": 10.0, + "source": "Middle", + "stereo-split-source": "Left/Right", + "type": "Feed-forward" + }, + "stereo-split": false, + "threshold": -12.0, + "wet": 0.0 + }, + "limiter#0": { + "alr": false, + "alr-attack": 5.0, + "alr-knee": 0.0, + "alr-release": 50.0, + "attack": 5.0, + "bypass": true, + "dithering": "None", + "external-sidechain": false, + "gain-boost": true, + "input-gain": 0.0, + "lookahead": 5.0, + "mode": "Herm Thin", + "output-gain": 0.0, + "oversampling": "None", + "release": 5.0, + "sidechain-preamp": 0.0, + "stereo-link": 100.0, + "threshold": 0.0 + }, + "plugins_order": [ + "limiter#0", + "compressor#0", + "reverb#0" + ], + "reverb#0": { + "amount": -12.0, + "bass-cut": 300.0, + "bypass": true, + "decay-time": 1.5, + "diffusion": 0.5, + "dry": 0.0, + "hf-damp": 5000.0, + "input-gain": 0.0, + "output-gain": 0.0, + "predelay": 0.0, + "room-size": "Large", + "treble-cut": 5000.0 + } + } +} diff --git a/hm/modules/linux/var/easyeffects/input/Studio.json b/hm/modules/linux/var/easyeffects/input/Studio.json new file mode 100644 index 0000000..f05bb2d --- /dev/null +++ b/hm/modules/linux/var/easyeffects/input/Studio.json @@ -0,0 +1,75 @@ +{ + "input": { + "blocklist": [], + "compressor#0": { + "attack": 20.0, + "boost-amount": 6.0, + "boost-threshold": -72.0, + "bypass": false, + "dry": -100.0, + "hpf-frequency": 10.0, + "hpf-mode": "off", + "input-gain": 0.0, + "knee": -6.0, + "lpf-frequency": 20000.0, + "lpf-mode": "off", + "makeup": 0.0, + "mode": "Downward", + "output-gain": -2.1, + "ratio": 4.0, + "release": 100.0, + "release-threshold": -100.0, + "sidechain": { + "lookahead": 0.0, + "mode": "RMS", + "preamp": 0.0, + "reactivity": 10.0, + "source": "Middle", + "stereo-split-source": "Left/Right", + "type": "Feed-forward" + }, + "stereo-split": false, + "threshold": -12.0, + "wet": 0.0 + }, + "limiter#0": { + "alr": false, + "alr-attack": 5.0, + "alr-knee": 0.0, + "alr-release": 50.0, + "attack": 5.0, + "bypass": false, + "dithering": "None", + "external-sidechain": false, + "gain-boost": true, + "input-gain": 0.0, + "lookahead": 5.0, + "mode": "Herm Thin", + "output-gain": 0.0, + "oversampling": "None", + "release": 5.0, + "sidechain-preamp": 0.0, + "stereo-link": 100.0, + "threshold": 0.0 + }, + "plugins_order": [ + "limiter#0", + "speex#0", + "compressor#0" + ], + "speex#0": { + "bypass": false, + "enable-agc": true, + "enable-denoise": true, + "enable-dereverb": false, + "input-gain": 0.0, + "noise-suppression": -70, + "output-gain": 0.0, + "vad": { + "enable": true, + "probability-continue": 90, + "probability-start": 95 + } + } + } +} diff --git a/hm/modules/linux/var/easyeffects/output/AirPods Pro ANC.json b/hm/modules/linux/var/easyeffects/output/AirPods Pro ANC.json new file mode 100644 index 0000000..73a2624 --- /dev/null +++ b/hm/modules/linux/var/easyeffects/output/AirPods Pro ANC.json @@ -0,0 +1,243 @@ +{ + "output": { + "blocklist": [], + "equalizer#0": { + "balance": 0.0, + "bypass": false, + "input-gain": -3.68, + "left": { + "band0": { + "frequency": 105.0, + "gain": 0.6000000238418579, + "mode": "APO (DR)", + "mute": false, + "q": 0.6666666865348816, + "slope": "x1", + "solo": false, + "type": "Lo-shelf", + "width": 4.0 + }, + "band1": { + "frequency": 27.100000381469727, + "gain": -0.30000001192092896, + "mode": "APO (DR)", + "mute": false, + "q": 2.7300000190734863, + "slope": "x1", + "solo": false, + "type": "Bell", + "width": 4.0 + }, + "band2": { + "frequency": 79.0, + "gain": 1.7999999523162842, + "mode": "APO (DR)", + "mute": false, + "q": 1.2300000190734863, + "slope": "x1", + "solo": false, + "type": "Bell", + "width": 4.0 + }, + "band3": { + "frequency": 474.8999938964844, + "gain": -2.5, + "mode": "APO (DR)", + "mute": false, + "q": 0.5400000214576721, + "slope": "x1", + "solo": false, + "type": "Bell", + "width": 4.0 + }, + "band4": { + "frequency": 1164.199951171875, + "gain": 2.0, + "mode": "APO (DR)", + "mute": false, + "q": 3.119999885559082, + "slope": "x1", + "solo": false, + "type": "Bell", + "width": 4.0 + }, + "band5": { + "frequency": 2344.60009765625, + "gain": 2.0, + "mode": "APO (DR)", + "mute": false, + "q": 3.0899999141693115, + "slope": "x1", + "solo": false, + "type": "Bell", + "width": 4.0 + }, + "band6": { + "frequency": 5148.0, + "gain": 3.9000000953674316, + "mode": "APO (DR)", + "mute": false, + "q": 1.6100000143051147, + "slope": "x1", + "solo": false, + "type": "Bell", + "width": 4.0 + }, + "band7": { + "frequency": 6457.60009765625, + "gain": -5.0, + "mode": "APO (DR)", + "mute": false, + "q": 6.0, + "slope": "x1", + "solo": false, + "type": "Bell", + "width": 4.0 + }, + "band8": { + "frequency": 9619.900390625, + "gain": 3.799999952316284, + "mode": "APO (DR)", + "mute": false, + "q": 2.309999942779541, + "slope": "x1", + "solo": false, + "type": "Bell", + "width": 4.0 + }, + "band9": { + "frequency": 10000.0, + "gain": -2.299999952316284, + "mode": "APO (DR)", + "mute": false, + "q": 0.6666666865348816, + "slope": "x1", + "solo": false, + "type": "Hi-shelf", + "width": 4.0 + } + }, + "mode": "IIR", + "num-bands": 10, + "output-gain": 0.0, + "pitch-left": 0.0, + "pitch-right": 0.0, + "right": { + "band0": { + "frequency": 105.0, + "gain": 0.6000000238418579, + "mode": "APO (DR)", + "mute": false, + "q": 0.6666666865348816, + "slope": "x1", + "solo": false, + "type": "Lo-shelf", + "width": 4.0 + }, + "band1": { + "frequency": 27.100000381469727, + "gain": -0.30000001192092896, + "mode": "APO (DR)", + "mute": false, + "q": 2.7300000190734863, + "slope": "x1", + "solo": false, + "type": "Bell", + "width": 4.0 + }, + "band2": { + "frequency": 79.0, + "gain": 1.7999999523162842, + "mode": "APO (DR)", + "mute": false, + "q": 1.2300000190734863, + "slope": "x1", + "solo": false, + "type": "Bell", + "width": 4.0 + }, + "band3": { + "frequency": 474.8999938964844, + "gain": -2.5, + "mode": "APO (DR)", + "mute": false, + "q": 0.5400000214576721, + "slope": "x1", + "solo": false, + "type": "Bell", + "width": 4.0 + }, + "band4": { + "frequency": 1164.199951171875, + "gain": 2.0, + "mode": "APO (DR)", + "mute": false, + "q": 3.119999885559082, + "slope": "x1", + "solo": false, + "type": "Bell", + "width": 4.0 + }, + "band5": { + "frequency": 2344.60009765625, + "gain": 2.0, + "mode": "APO (DR)", + "mute": false, + "q": 3.0899999141693115, + "slope": "x1", + "solo": false, + "type": "Bell", + "width": 4.0 + }, + "band6": { + "frequency": 5148.0, + "gain": 3.9000000953674316, + "mode": "APO (DR)", + "mute": false, + "q": 1.6100000143051147, + "slope": "x1", + "solo": false, + "type": "Bell", + "width": 4.0 + }, + "band7": { + "frequency": 6457.60009765625, + "gain": -5.0, + "mode": "APO (DR)", + "mute": false, + "q": 6.0, + "slope": "x1", + "solo": false, + "type": "Bell", + "width": 4.0 + }, + "band8": { + "frequency": 9619.900390625, + "gain": 3.799999952316284, + "mode": "APO (DR)", + "mute": false, + "q": 2.309999942779541, + "slope": "x1", + "solo": false, + "type": "Bell", + "width": 4.0 + }, + "band9": { + "frequency": 10000.0, + "gain": -2.299999952316284, + "mode": "APO (DR)", + "mute": false, + "q": 0.6666666865348816, + "slope": "x1", + "solo": false, + "type": "Hi-shelf", + "width": 4.0 + } + }, + "split-channels": false + }, + "plugins_order": [ + "equalizer#0" + ] + } +} diff --git a/hm/modules/linux/var/easyeffects/output/AirPods Pro Transparency.json b/hm/modules/linux/var/easyeffects/output/AirPods Pro Transparency.json new file mode 100644 index 0000000..ae46b48 --- /dev/null +++ b/hm/modules/linux/var/easyeffects/output/AirPods Pro Transparency.json @@ -0,0 +1,243 @@ +{ + "output": { + "blocklist": [], + "equalizer#0": { + "balance": 0.0, + "bypass": false, + "input-gain": -3.34, + "left": { + "band0": { + "frequency": 105.0, + "gain": 0.699999988079071, + "mode": "APO (DR)", + "mute": false, + "q": 0.6666666865348816, + "slope": "x1", + "solo": false, + "type": "Lo-shelf", + "width": 4.0 + }, + "band1": { + "frequency": 26.5, + "gain": -0.4000000059604645, + "mode": "APO (DR)", + "mute": false, + "q": 2.380000114440918, + "slope": "x1", + "solo": false, + "type": "Bell", + "width": 4.0 + }, + "band2": { + "frequency": 79.19999694824219, + "gain": 1.600000023841858, + "mode": "APO (DR)", + "mute": false, + "q": 1.2999999523162842, + "slope": "x1", + "solo": false, + "type": "Bell", + "width": 4.0 + }, + "band3": { + "frequency": 468.0, + "gain": -2.5, + "mode": "APO (DR)", + "mute": false, + "q": 0.5400000214576721, + "slope": "x1", + "solo": false, + "type": "Bell", + "width": 4.0 + }, + "band4": { + "frequency": 1152.699951171875, + "gain": 1.899999976158142, + "mode": "APO (DR)", + "mute": false, + "q": 2.890000104904175, + "slope": "x1", + "solo": false, + "type": "Bell", + "width": 4.0 + }, + "band5": { + "frequency": 2310.800048828125, + "gain": 1.7999999523162842, + "mode": "APO (DR)", + "mute": false, + "q": 2.569999933242798, + "slope": "x1", + "solo": false, + "type": "Bell", + "width": 4.0 + }, + "band6": { + "frequency": 5148.7001953125, + "gain": 3.5, + "mode": "APO (DR)", + "mute": false, + "q": 1.4700000286102295, + "slope": "x1", + "solo": false, + "type": "Bell", + "width": 4.0 + }, + "band7": { + "frequency": 6472.39990234375, + "gain": -4.599999904632568, + "mode": "APO (DR)", + "mute": false, + "q": 6.0, + "slope": "x1", + "solo": false, + "type": "Bell", + "width": 4.0 + }, + "band8": { + "frequency": 9526.5, + "gain": 3.700000047683716, + "mode": "APO (DR)", + "mute": false, + "q": 2.25, + "slope": "x1", + "solo": false, + "type": "Bell", + "width": 4.0 + }, + "band9": { + "frequency": 10000.0, + "gain": -2.299999952316284, + "mode": "APO (DR)", + "mute": false, + "q": 0.6666666865348816, + "slope": "x1", + "solo": false, + "type": "Hi-shelf", + "width": 4.0 + } + }, + "mode": "IIR", + "num-bands": 10, + "output-gain": 0.0, + "pitch-left": 0.0, + "pitch-right": 0.0, + "right": { + "band0": { + "frequency": 105.0, + "gain": 0.699999988079071, + "mode": "APO (DR)", + "mute": false, + "q": 0.6666666865348816, + "slope": "x1", + "solo": false, + "type": "Lo-shelf", + "width": 4.0 + }, + "band1": { + "frequency": 26.5, + "gain": -0.4000000059604645, + "mode": "APO (DR)", + "mute": false, + "q": 2.380000114440918, + "slope": "x1", + "solo": false, + "type": "Bell", + "width": 4.0 + }, + "band2": { + "frequency": 79.19999694824219, + "gain": 1.600000023841858, + "mode": "APO (DR)", + "mute": false, + "q": 1.2999999523162842, + "slope": "x1", + "solo": false, + "type": "Bell", + "width": 4.0 + }, + "band3": { + "frequency": 468.0, + "gain": -2.5, + "mode": "APO (DR)", + "mute": false, + "q": 0.5400000214576721, + "slope": "x1", + "solo": false, + "type": "Bell", + "width": 4.0 + }, + "band4": { + "frequency": 1152.699951171875, + "gain": 1.899999976158142, + "mode": "APO (DR)", + "mute": false, + "q": 2.890000104904175, + "slope": "x1", + "solo": false, + "type": "Bell", + "width": 4.0 + }, + "band5": { + "frequency": 2310.800048828125, + "gain": 1.7999999523162842, + "mode": "APO (DR)", + "mute": false, + "q": 2.569999933242798, + "slope": "x1", + "solo": false, + "type": "Bell", + "width": 4.0 + }, + "band6": { + "frequency": 5148.7001953125, + "gain": 3.5, + "mode": "APO (DR)", + "mute": false, + "q": 1.4700000286102295, + "slope": "x1", + "solo": false, + "type": "Bell", + "width": 4.0 + }, + "band7": { + "frequency": 6472.39990234375, + "gain": -4.599999904632568, + "mode": "APO (DR)", + "mute": false, + "q": 6.0, + "slope": "x1", + "solo": false, + "type": "Bell", + "width": 4.0 + }, + "band8": { + "frequency": 9526.5, + "gain": 3.700000047683716, + "mode": "APO (DR)", + "mute": false, + "q": 2.25, + "slope": "x1", + "solo": false, + "type": "Bell", + "width": 4.0 + }, + "band9": { + "frequency": 10000.0, + "gain": -2.299999952316284, + "mode": "APO (DR)", + "mute": false, + "q": 0.6666666865348816, + "slope": "x1", + "solo": false, + "type": "Hi-shelf", + "width": 4.0 + } + }, + "split-channels": false + }, + "plugins_order": [ + "equalizer#0" + ] + } +} diff --git a/hm/modules/linux/var/easyeffects/output/Arctis Pro EQ.json b/hm/modules/linux/var/easyeffects/output/Arctis Pro EQ.json new file mode 100644 index 0000000..3f774c8 --- /dev/null +++ b/hm/modules/linux/var/easyeffects/output/Arctis Pro EQ.json @@ -0,0 +1,243 @@ +{ + "output": { + "blocklist": [], + "equalizer#0": { + "balance": 0.0, + "bypass": false, + "input-gain": -8.61, + "left": { + "band0": { + "frequency": 105.0, + "gain": -0.6000000238418579, + "mode": "APO (DR)", + "mute": false, + "q": 0.699999988079071, + "slope": "x1", + "solo": false, + "type": "Lo-shelf", + "width": 4.0 + }, + "band1": { + "frequency": 50.0, + "gain": 3.9000000953674316, + "mode": "APO (DR)", + "mute": false, + "q": 2.0399999618530273, + "slope": "x1", + "solo": false, + "type": "Bell", + "width": 4.0 + }, + "band2": { + "frequency": 135.6999969482422, + "gain": -1.5, + "mode": "APO (DR)", + "mute": false, + "q": 1.149999976158142, + "slope": "x1", + "solo": false, + "type": "Bell", + "width": 4.0 + }, + "band3": { + "frequency": 361.3999938964844, + "gain": 3.0999999046325684, + "mode": "APO (DR)", + "mute": false, + "q": 1.159999966621399, + "slope": "x1", + "solo": false, + "type": "Bell", + "width": 4.0 + }, + "band4": { + "frequency": 1135.300048828125, + "gain": -4.599999904632568, + "mode": "APO (DR)", + "mute": false, + "q": 1.2200000286102295, + "slope": "x1", + "solo": false, + "type": "Bell", + "width": 4.0 + }, + "band5": { + "frequency": 2703.699951171875, + "gain": -3.799999952316284, + "mode": "APO (DR)", + "mute": false, + "q": 2.799999952316284, + "slope": "x1", + "solo": false, + "type": "Bell", + "width": 4.0 + }, + "band6": { + "frequency": 3766.800048828125, + "gain": 9.399999618530273, + "mode": "APO (DR)", + "mute": false, + "q": 1.8300000429153442, + "slope": "x1", + "solo": false, + "type": "Bell", + "width": 4.0 + }, + "band7": { + "frequency": 5260.39990234375, + "gain": 5.0, + "mode": "APO (DR)", + "mute": false, + "q": 3.609999895095825, + "slope": "x1", + "solo": false, + "type": "Bell", + "width": 4.0 + }, + "band8": { + "frequency": 8775.2998046875, + "gain": -7.400000095367432, + "mode": "APO (DR)", + "mute": false, + "q": 1.75, + "slope": "x1", + "solo": false, + "type": "Bell", + "width": 4.0 + }, + "band9": { + "frequency": 10000.0, + "gain": -2.299999952316284, + "mode": "APO (DR)", + "mute": false, + "q": 0.699999988079071, + "slope": "x1", + "solo": false, + "type": "Hi-shelf", + "width": 4.0 + } + }, + "mode": "IIR", + "num-bands": 10, + "output-gain": 3.9, + "pitch-left": 0.0, + "pitch-right": 0.0, + "right": { + "band0": { + "frequency": 105.0, + "gain": -0.6000000238418579, + "mode": "APO (DR)", + "mute": false, + "q": 0.699999988079071, + "slope": "x1", + "solo": false, + "type": "Lo-shelf", + "width": 4.0 + }, + "band1": { + "frequency": 50.0, + "gain": 3.9000000953674316, + "mode": "APO (DR)", + "mute": false, + "q": 2.0399999618530273, + "slope": "x1", + "solo": false, + "type": "Bell", + "width": 4.0 + }, + "band2": { + "frequency": 135.6999969482422, + "gain": -1.5, + "mode": "APO (DR)", + "mute": false, + "q": 1.149999976158142, + "slope": "x1", + "solo": false, + "type": "Bell", + "width": 4.0 + }, + "band3": { + "frequency": 361.3999938964844, + "gain": 3.0999999046325684, + "mode": "APO (DR)", + "mute": false, + "q": 1.159999966621399, + "slope": "x1", + "solo": false, + "type": "Bell", + "width": 4.0 + }, + "band4": { + "frequency": 1135.300048828125, + "gain": -4.599999904632568, + "mode": "APO (DR)", + "mute": false, + "q": 1.2200000286102295, + "slope": "x1", + "solo": false, + "type": "Bell", + "width": 4.0 + }, + "band5": { + "frequency": 2703.699951171875, + "gain": -3.799999952316284, + "mode": "APO (DR)", + "mute": false, + "q": 2.799999952316284, + "slope": "x1", + "solo": false, + "type": "Bell", + "width": 4.0 + }, + "band6": { + "frequency": 3766.800048828125, + "gain": 9.399999618530273, + "mode": "APO (DR)", + "mute": false, + "q": 1.8300000429153442, + "slope": "x1", + "solo": false, + "type": "Bell", + "width": 4.0 + }, + "band7": { + "frequency": 5260.39990234375, + "gain": 5.0, + "mode": "APO (DR)", + "mute": false, + "q": 3.609999895095825, + "slope": "x1", + "solo": false, + "type": "Bell", + "width": 4.0 + }, + "band8": { + "frequency": 8775.2998046875, + "gain": -7.400000095367432, + "mode": "APO (DR)", + "mute": false, + "q": 1.75, + "slope": "x1", + "solo": false, + "type": "Bell", + "width": 4.0 + }, + "band9": { + "frequency": 10000.0, + "gain": -2.299999952316284, + "mode": "APO (DR)", + "mute": false, + "q": 0.699999988079071, + "slope": "x1", + "solo": false, + "type": "Hi-shelf", + "width": 4.0 + } + }, + "split-channels": false + }, + "plugins_order": [ + "equalizer#0" + ] + } +} diff --git a/hm/modules/linux/var/easyeffects/output/DT770 Pro.json b/hm/modules/linux/var/easyeffects/output/DT770 Pro.json new file mode 100644 index 0000000..d30f198 --- /dev/null +++ b/hm/modules/linux/var/easyeffects/output/DT770 Pro.json @@ -0,0 +1,243 @@ +{ + "output": { + "blocklist": [], + "equalizer#0": { + "balance": 0.0, + "bypass": false, + "input-gain": -4.74, + "left": { + "band0": { + "frequency": 105.0, + "gain": 3.0, + "mode": "APO (DR)", + "mute": false, + "q": 0.6666666865348816, + "slope": "x1", + "solo": false, + "type": "Lo-shelf", + "width": 4.0 + }, + "band1": { + "frequency": 53.5, + "gain": -6.800000190734863, + "mode": "APO (DR)", + "mute": false, + "q": 0.699999988079071, + "slope": "x1", + "solo": false, + "type": "Bell", + "width": 4.0 + }, + "band2": { + "frequency": 141.89999389648438, + "gain": -2.4000000953674316, + "mode": "APO (DR)", + "mute": false, + "q": 2.7699999809265137, + "slope": "x1", + "solo": false, + "type": "Bell", + "width": 4.0 + }, + "band3": { + "frequency": 199.89999389648438, + "gain": 6.0, + "mode": "APO (DR)", + "mute": false, + "q": 2.5, + "slope": "x1", + "solo": false, + "type": "Bell", + "width": 4.0 + }, + "band4": { + "frequency": 943.5, + "gain": -1.399999976158142, + "mode": "APO (DR)", + "mute": false, + "q": 3.5, + "slope": "x1", + "solo": false, + "type": "Bell", + "width": 4.0 + }, + "band5": { + "frequency": 2352.89990234375, + "gain": -1.5, + "mode": "APO (DR)", + "mute": false, + "q": 3.440000057220459, + "slope": "x1", + "solo": false, + "type": "Bell", + "width": 4.0 + }, + "band6": { + "frequency": 3523.5, + "gain": 4.800000190734863, + "mode": "APO (DR)", + "mute": false, + "q": 3.859999895095825, + "slope": "x1", + "solo": false, + "type": "Bell", + "width": 4.0 + }, + "band7": { + "frequency": 5082.7001953125, + "gain": -3.5, + "mode": "APO (DR)", + "mute": false, + "q": 4.53000020980835, + "slope": "x1", + "solo": false, + "type": "Bell", + "width": 4.0 + }, + "band8": { + "frequency": 6828.10009765625, + "gain": -3.9000000953674316, + "mode": "APO (DR)", + "mute": false, + "q": 3.2799999713897705, + "slope": "x1", + "solo": false, + "type": "Bell", + "width": 4.0 + }, + "band9": { + "frequency": 10000.0, + "gain": -4.599999904632568, + "mode": "APO (DR)", + "mute": false, + "q": 0.6666666865348816, + "slope": "x1", + "solo": false, + "type": "Hi-shelf", + "width": 4.0 + } + }, + "mode": "IIR", + "num-bands": 10, + "output-gain": 3.9, + "pitch-left": 0.0, + "pitch-right": 0.0, + "right": { + "band0": { + "frequency": 105.0, + "gain": 3.0, + "mode": "APO (DR)", + "mute": false, + "q": 0.6666666865348816, + "slope": "x1", + "solo": false, + "type": "Lo-shelf", + "width": 4.0 + }, + "band1": { + "frequency": 53.5, + "gain": -6.800000190734863, + "mode": "APO (DR)", + "mute": false, + "q": 0.699999988079071, + "slope": "x1", + "solo": false, + "type": "Bell", + "width": 4.0 + }, + "band2": { + "frequency": 141.89999389648438, + "gain": -2.4000000953674316, + "mode": "APO (DR)", + "mute": false, + "q": 2.7699999809265137, + "slope": "x1", + "solo": false, + "type": "Bell", + "width": 4.0 + }, + "band3": { + "frequency": 199.89999389648438, + "gain": 6.0, + "mode": "APO (DR)", + "mute": false, + "q": 2.5, + "slope": "x1", + "solo": false, + "type": "Bell", + "width": 4.0 + }, + "band4": { + "frequency": 943.5, + "gain": -1.399999976158142, + "mode": "APO (DR)", + "mute": false, + "q": 3.5, + "slope": "x1", + "solo": false, + "type": "Bell", + "width": 4.0 + }, + "band5": { + "frequency": 2352.89990234375, + "gain": -1.5, + "mode": "APO (DR)", + "mute": false, + "q": 3.440000057220459, + "slope": "x1", + "solo": false, + "type": "Bell", + "width": 4.0 + }, + "band6": { + "frequency": 3523.5, + "gain": 4.800000190734863, + "mode": "APO (DR)", + "mute": false, + "q": 3.859999895095825, + "slope": "x1", + "solo": false, + "type": "Bell", + "width": 4.0 + }, + "band7": { + "frequency": 5082.7001953125, + "gain": -3.5, + "mode": "APO (DR)", + "mute": false, + "q": 4.53000020980835, + "slope": "x1", + "solo": false, + "type": "Bell", + "width": 4.0 + }, + "band8": { + "frequency": 6828.10009765625, + "gain": -3.9000000953674316, + "mode": "APO (DR)", + "mute": false, + "q": 3.2799999713897705, + "slope": "x1", + "solo": false, + "type": "Bell", + "width": 4.0 + }, + "band9": { + "frequency": 10000.0, + "gain": -4.599999904632568, + "mode": "APO (DR)", + "mute": false, + "q": 0.6666666865348816, + "slope": "x1", + "solo": false, + "type": "Hi-shelf", + "width": 4.0 + } + }, + "split-channels": false + }, + "plugins_order": [ + "equalizer#0" + ] + } +} diff --git a/hm/modules/linux/var/easyeffects/output/Default.json b/hm/modules/linux/var/easyeffects/output/Default.json new file mode 100644 index 0000000..02e450d --- /dev/null +++ b/hm/modules/linux/var/easyeffects/output/Default.json @@ -0,0 +1,243 @@ +{ + "output": { + "blocklist": [], + "equalizer#0": { + "balance": 0.0, + "bypass": true, + "input-gain": -8.61, + "left": { + "band0": { + "frequency": 105.0, + "gain": -0.6000000238418579, + "mode": "APO (DR)", + "mute": false, + "q": 0.699999988079071, + "slope": "x1", + "solo": false, + "type": "Lo-shelf", + "width": 4.0 + }, + "band1": { + "frequency": 50.0, + "gain": 3.9000000953674316, + "mode": "APO (DR)", + "mute": false, + "q": 2.0399999618530273, + "slope": "x1", + "solo": false, + "type": "Bell", + "width": 4.0 + }, + "band2": { + "frequency": 135.6999969482422, + "gain": -1.5, + "mode": "APO (DR)", + "mute": false, + "q": 1.149999976158142, + "slope": "x1", + "solo": false, + "type": "Bell", + "width": 4.0 + }, + "band3": { + "frequency": 361.3999938964844, + "gain": 3.0999999046325684, + "mode": "APO (DR)", + "mute": false, + "q": 1.159999966621399, + "slope": "x1", + "solo": false, + "type": "Bell", + "width": 4.0 + }, + "band4": { + "frequency": 1135.300048828125, + "gain": -4.599999904632568, + "mode": "APO (DR)", + "mute": false, + "q": 1.2200000286102295, + "slope": "x1", + "solo": false, + "type": "Bell", + "width": 4.0 + }, + "band5": { + "frequency": 2703.699951171875, + "gain": -3.799999952316284, + "mode": "APO (DR)", + "mute": false, + "q": 2.799999952316284, + "slope": "x1", + "solo": false, + "type": "Bell", + "width": 4.0 + }, + "band6": { + "frequency": 3766.800048828125, + "gain": 9.399999618530273, + "mode": "APO (DR)", + "mute": false, + "q": 1.8300000429153442, + "slope": "x1", + "solo": false, + "type": "Bell", + "width": 4.0 + }, + "band7": { + "frequency": 5260.39990234375, + "gain": 5.0, + "mode": "APO (DR)", + "mute": false, + "q": 3.609999895095825, + "slope": "x1", + "solo": false, + "type": "Bell", + "width": 4.0 + }, + "band8": { + "frequency": 8775.2998046875, + "gain": -7.400000095367432, + "mode": "APO (DR)", + "mute": false, + "q": 1.75, + "slope": "x1", + "solo": false, + "type": "Bell", + "width": 4.0 + }, + "band9": { + "frequency": 10000.0, + "gain": -2.299999952316284, + "mode": "APO (DR)", + "mute": false, + "q": 0.699999988079071, + "slope": "x1", + "solo": false, + "type": "Hi-shelf", + "width": 4.0 + } + }, + "mode": "IIR", + "num-bands": 10, + "output-gain": 3.9, + "pitch-left": 0.0, + "pitch-right": 0.0, + "right": { + "band0": { + "frequency": 105.0, + "gain": -0.6000000238418579, + "mode": "APO (DR)", + "mute": false, + "q": 0.699999988079071, + "slope": "x1", + "solo": false, + "type": "Lo-shelf", + "width": 4.0 + }, + "band1": { + "frequency": 50.0, + "gain": 3.9000000953674316, + "mode": "APO (DR)", + "mute": false, + "q": 2.0399999618530273, + "slope": "x1", + "solo": false, + "type": "Bell", + "width": 4.0 + }, + "band2": { + "frequency": 135.6999969482422, + "gain": -1.5, + "mode": "APO (DR)", + "mute": false, + "q": 1.149999976158142, + "slope": "x1", + "solo": false, + "type": "Bell", + "width": 4.0 + }, + "band3": { + "frequency": 361.3999938964844, + "gain": 3.0999999046325684, + "mode": "APO (DR)", + "mute": false, + "q": 1.159999966621399, + "slope": "x1", + "solo": false, + "type": "Bell", + "width": 4.0 + }, + "band4": { + "frequency": 1135.300048828125, + "gain": -4.599999904632568, + "mode": "APO (DR)", + "mute": false, + "q": 1.2200000286102295, + "slope": "x1", + "solo": false, + "type": "Bell", + "width": 4.0 + }, + "band5": { + "frequency": 2703.699951171875, + "gain": -3.799999952316284, + "mode": "APO (DR)", + "mute": false, + "q": 2.799999952316284, + "slope": "x1", + "solo": false, + "type": "Bell", + "width": 4.0 + }, + "band6": { + "frequency": 3766.800048828125, + "gain": 9.399999618530273, + "mode": "APO (DR)", + "mute": false, + "q": 1.8300000429153442, + "slope": "x1", + "solo": false, + "type": "Bell", + "width": 4.0 + }, + "band7": { + "frequency": 5260.39990234375, + "gain": 5.0, + "mode": "APO (DR)", + "mute": false, + "q": 3.609999895095825, + "slope": "x1", + "solo": false, + "type": "Bell", + "width": 4.0 + }, + "band8": { + "frequency": 8775.2998046875, + "gain": -7.400000095367432, + "mode": "APO (DR)", + "mute": false, + "q": 1.75, + "slope": "x1", + "solo": false, + "type": "Bell", + "width": 4.0 + }, + "band9": { + "frequency": 10000.0, + "gain": -2.299999952316284, + "mode": "APO (DR)", + "mute": false, + "q": 0.699999988079071, + "slope": "x1", + "solo": false, + "type": "Hi-shelf", + "width": 4.0 + } + }, + "split-channels": false + }, + "plugins_order": [ + "equalizer#0" + ] + } +} diff --git a/hm/modules/linux/var/settings.json b/hm/modules/linux/var/settings.json new file mode 100644 index 0000000..e8db804 --- /dev/null +++ b/hm/modules/linux/var/settings.json @@ -0,0 +1,611 @@ +{ + "autoUpdate": true, + "autoUpdateNotification": true, + "useQuickCss": true, + "themeLinks": [], + "enabledThemes": ["stylix.theme.css"], + "enableReactDevtools": false, + "frameless": false, + "transparent": false, + "winCtrlQ": false, + "disableMinSize": false, + "winNativeTitleBar": false, + "plugins": { + "ChatInputButtonAPI": { + "enabled": false + }, + "CommandsAPI": { + "enabled": true + }, + "MemberListDecoratorsAPI": { + "enabled": true + }, + "MessageAccessoriesAPI": { + "enabled": true + }, + "MessageDecorationsAPI": { + "enabled": true + }, + "MessageEventsAPI": { + "enabled": true + }, + "MessagePopoverAPI": { + "enabled": false + }, + "MessageUpdaterAPI": { + "enabled": false + }, + "ServerListAPI": { + "enabled": true + }, + "UserSettingsAPI": { + "enabled": true + }, + "AlwaysAnimate": { + "enabled": false + }, + "AlwaysTrust": { + "enabled": true, + "domain": true, + "file": true + }, + "AnonymiseFileNames": { + "enabled": true, + "anonymiseByDefault": true, + "method": 0, + "randomisedLength": 7 + }, + "AppleMusicRichPresence": { + "enabled": false + }, + "WebRichPresence (arRPC)": { + "enabled": false + }, + "AutomodContext": { + "enabled": false + }, + "BANger": { + "enabled": false + }, + "BetterFolders": { + "enabled": true, + "sidebar": true, + "showFolderIcon": 1, + "keepIcons": false, + "closeAllHomeButton": false, + "closeAllFolders": false, + "forceOpen": false, + "sidebarAnim": true + }, + "BetterGifAltText": { + "enabled": false + }, + "BetterGifPicker": { + "enabled": false + }, + "BetterNotesBox": { + "enabled": false + }, + "BetterRoleContext": { + "enabled": false + }, + "BetterRoleDot": { + "enabled": true, + "bothStyles": false, + "copyRoleColorInProfilePopout": false + }, + "BetterSessions": { + "enabled": true, + "backgroundCheck": false + }, + "BetterSettings": { + "enabled": false, + "disableFade": true, + "eagerLoad": true + }, + "BetterUploadButton": { + "enabled": false + }, + "BiggerStreamPreview": { + "enabled": false + }, + "BlurNSFW": { + "enabled": false + }, + "CallTimer": { + "enabled": true + }, + "ClearURLs": { + "enabled": true + }, + "ClientTheme": { + "enabled": false + }, + "ColorSighted": { + "enabled": false + }, + "ConsoleJanitor": { + "enabled": false + }, + "ConsoleShortcuts": { + "enabled": false + }, + "CopyEmojiMarkdown": { + "enabled": false + }, + "CopyUserURLs": { + "enabled": true + }, + "CrashHandler": { + "enabled": true + }, + "CtrlEnterSend": { + "enabled": false + }, + "CustomRPC": { + "enabled": false + }, + "CustomIdle": { + "enabled": false + }, + "Dearrow": { + "enabled": false + }, + "Decor": { + "enabled": false + }, + "DisableCallIdle": { + "enabled": false + }, + "DontRoundMyTimestamps": { + "enabled": false + }, + "EmoteCloner": { + "enabled": false + }, + "Experiments": { + "enabled": false + }, + "F8Break": { + "enabled": false + }, + "FakeNitro": { + "enabled": false + }, + "FakeProfileThemes": { + "enabled": false + }, + "FavoriteEmojiFirst": { + "enabled": false + }, + "FavoriteGifSearch": { + "enabled": false + }, + "FixCodeblockGap": { + "enabled": false + }, + "FixSpotifyEmbeds": { + "enabled": false + }, + "FixYoutubeEmbeds": { + "enabled": false + }, + "ForceOwnerCrown": { + "enabled": false + }, + "FriendInvites": { + "enabled": false + }, + "FriendsSince": { + "enabled": false + }, + "GameActivityToggle": { + "enabled": false + }, + "GifPaste": { + "enabled": false + }, + "GreetStickerPicker": { + "enabled": false + }, + "HideAttachments": { + "enabled": false + }, + "iLoveSpam": { + "enabled": false + }, + "IgnoreActivities": { + "enabled": false + }, + "ImageLink": { + "enabled": false + }, + "ImageZoom": { + "enabled": false + }, + "ImplicitRelationships": { + "enabled": false + }, + "InvisibleChat": { + "enabled": false + }, + "KeepCurrentChannel": { + "enabled": false + }, + "LastFMRichPresence": { + "enabled": false + }, + "LoadingQuotes": { + "enabled": false + }, + "MaskedLinkPaste": { + "enabled": false + }, + "MemberCount": { + "enabled": false + }, + "MessageClickActions": { + "enabled": false + }, + "MessageLatency": { + "enabled": false + }, + "MessageLinkEmbeds": { + "enabled": false + }, + "MessageLogger": { + "enabled": false + }, + "MessageTags": { + "enabled": false + }, + "MoreCommands": { + "enabled": false + }, + "MoreKaomoji": { + "enabled": false + }, + "MoreUserTags": { + "enabled": false + }, + "Moyai": { + "enabled": false + }, + "MutualGroupDMs": { + "enabled": false + }, + "NewGuildSettings": { + "enabled": false + }, + "NoBlockedMessages": { + "enabled": false + }, + "NoDefaultHangStatus": { + "enabled": false + }, + "NoDevtoolsWarning": { + "enabled": false + }, + "NoF1": { + "enabled": false + }, + "NoMosaic": { + "enabled": false + }, + "NoOnboardingDelay": { + "enabled": false + }, + "NoPendingCount": { + "enabled": false + }, + "NoProfileThemes": { + "enabled": false + }, + "NoReplyMention": { + "enabled": false + }, + "NoScreensharePreview": { + "enabled": false + }, + "NoServerEmojis": { + "enabled": false + }, + "NoTypingAnimation": { + "enabled": false + }, + "NoUnblockToJump": { + "enabled": false + }, + "NormalizeMessageLinks": { + "enabled": false + }, + "NotificationVolume": { + "enabled": false + }, + "NSFWGateBypass": { + "enabled": false + }, + "OnePingPerDM": { + "enabled": false + }, + "oneko": { + "enabled": false + }, + "OpenInApp": { + "enabled": false + }, + "OverrideForumDefaults": { + "enabled": false + }, + "PartyMode": { + "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": true + }, + "PreviewMessage": { + "enabled": false + }, + "QuickMention": { + "enabled": false + }, + "QuickReply": { + "enabled": false + }, + "ReactErrorDecoder": { + "enabled": false + }, + "ReadAllNotificationsButton": { + "enabled": true + }, + "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": true, + "showMode": 0, + "hideUnreads": true + }, + "ShowHiddenThings": { + "enabled": true, + "showTimeouts": true, + "showInvitesPaused": true, + "showModView": true, + "disableDiscoveryFilters": true, + "disableDisallowedDiscoveryFilters": true + }, + "ShowMeYourName": { + "enabled": false + }, + "ShowTimeoutDuration": { + "enabled": false + }, + "SilentMessageToggle": { + "enabled": false + }, + "SilentTyping": { + "enabled": false + }, + "SortFriendRequests": { + "enabled": false + }, + "SpotifyControls": { + "enabled": true, + "hoverControls": false + }, + "SpotifyCrack": { + "enabled": false + }, + "SpotifyShareCommands": { + "enabled": false + }, + "StartupTimings": { + "enabled": false + }, + "StreamerModeOnStream": { + "enabled": false + }, + "SuperReactionTweaks": { + "enabled": false + }, + "TextReplace": { + "enabled": false + }, + "ThemeAttributes": { + "enabled": false + }, + "TimeBarAllActivities": { + "enabled": false + }, + "Translate": { + "enabled": false + }, + "TypingIndicator": { + "enabled": false + }, + "TypingTweaks": { + "enabled": false + }, + "Unindent": { + "enabled": false + }, + "UnlockedAvatarZoom": { + "enabled": false + }, + "UnsuppressEmbeds": { + "enabled": false + }, + "UserVoiceShow": { + "enabled": false + }, + "USRBG": { + "enabled": false + }, + "ValidReply": { + "enabled": false + }, + "ValidUser": { + "enabled": false + }, + "VoiceChatDoubleClick": { + "enabled": false + }, + "VcNarrator": { + "enabled": false + }, + "VencordToolbox": { + "enabled": false + }, + "ViewIcons": { + "enabled": false + }, + "ViewRaw": { + "enabled": false + }, + "VoiceDownload": { + "enabled": false + }, + "VoiceMessages": { + "enabled": false + }, + "WebKeybinds": { + "enabled": true + }, + "WebScreenShareFixes": { + "enabled": true + }, + "WhoReacted": { + "enabled": false + }, + "XSOverlay": { + "enabled": false + }, + "NoTrack": { + "enabled": true, + "disableAnalytics": true + }, + "WebContextMenus": { + "enabled": true, + "addBack": true + }, + "Settings": { + "enabled": true, + "settingsLocation": "aboveNitro" + }, + "SupportHelper": { + "enabled": true + }, + "YoutubeAdblock": { + "enabled": true + }, + "AlwaysExpandRoles": { + "enabled": false + }, + "FullSearchContext": { + "enabled": false + }, + "UserMessagesPronouns": { + "enabled": false + }, + "DynamicImageModalAPI": { + "enabled": false + }, + "AccountPanelServerProfile": { + "enabled": false + }, + "CopyFileContents": { + "enabled": false + }, + "FixImagesQuality": { + "enabled": false + }, + "MentionAvatars": { + "enabled": false + }, + "NoMaskedUrlPaste": { + "enabled": false + }, + "StickerPaste": { + "enabled": false + }, + "VolumeBooster": { + "enabled": false + } + }, + "notifications": { + "timeout": 5000, + "position": "bottom-right", + "useNative": "not-focused", + "logLimit": 50 + }, + "cloud": { + "authenticated": false, + "url": "https://api.vencord.dev/", + "settingsSync": false, + "settingsSyncVersion": 1731210778467 + } +} + diff --git a/hosts/demeter/default.nix b/hosts/demeter/default.nix deleted file mode 100644 index 93b71aa..0000000 --- a/hosts/demeter/default.nix +++ /dev/null @@ -1,39 +0,0 @@ -{ - inputs, - ... -}: -{ - imports = - [ - ./configuration.nix - ../../modules/linux - ../../overlays - { - home-manager.useGlobalPkgs = true; - home-manager.useUserPackages = true; - home-manager.backupFileExtension = "backup"; - home-manager.extraSpecialArgs = { - inherit inputs; - }; - home-manager.users.youwen = { - imports = - [ - ../../users/youwen/linux/laptop - ../../users/youwen/linux/packages/x86_64 - ../../users/youwen/linux/programs - (import ../../users/youwen/common/fastfetch { }) - ../../users/youwen/common - ../../users/youwen/linux/spicetify - ./home-manager-extras - ] - ++ (with inputs; [ - nix-index-database.hmModules.nix-index - ]); - }; - } - ] - ++ (with inputs; [ - lanzaboote.nixosModules.lanzaboote - home-manager.nixosModules.home-manager - ]); -} diff --git a/modules/linux/audio/default.nix b/modules/linux/audio/default.nix index a1e1ab6..c91d9aa 100755 --- a/modules/linux/audio/default.nix +++ b/modules/linux/audio/default.nix @@ -20,6 +20,7 @@ in alsa.support32Bit = true; pulse.enable = true; jack.enable = true; + wireplumber.enable = true; }; }; } diff --git a/modules/linux/desktop-environment/default.nix b/modules/linux/desktop-environment/default.nix index 734506a..b6efc97 100644 --- a/modules/linux/desktop-environment/default.nix +++ b/modules/linux/desktop-environment/default.nix @@ -9,7 +9,13 @@ let in { options.liminalOS.desktop = { - enable = lib.mkEnableOption "liminalOS desktop environment with Hyprland and other utilities"; + enable = lib.mkOption { + type = lib.types.bool; + default = config.liminalOS.enable; + description = '' + Whether to enable the liminalOS desktop environment. + ''; + }; hyprland.enable = lib.mkOption { type = lib.types.bool; default = cfg.enable; diff --git a/modules/linux/flatpak/default.nix b/modules/linux/flatpak/default.nix index 417d9f4..6c65c41 100644 --- a/modules/linux/flatpak/default.nix +++ b/modules/linux/flatpak/default.nix @@ -27,6 +27,7 @@ in }; config = lib.mkIf cfg.enable { + xdg.portal.enable = true; services.flatpak = { enable = true; diff --git a/modules/linux/misc/default.nix b/modules/linux/misc/default.nix index 7e93c75..b23d6ce 100644 --- a/modules/linux/misc/default.nix +++ b/modules/linux/misc/default.nix @@ -55,9 +55,21 @@ in default = pkgs.neovim; description = "Default text editor that will be installed and set as $EDITOR. Set to null to disable setting and installing default text editor."; }; + formFactor = lib.mkOption { + type = lib.types.nullOr ( + lib.types.enum [ + "laptop" + "desktop" + ] + ); + default = null; + description = '' + Form factor of the machine. Adjusts some UI settings. + ''; + }; }; - config = { + config = lib.mkIf cfg.enable { services.printing.enable = mkIf cfg.system.printing.enable true; services.avahi = mkIf cfg.system.printing.enable { @@ -113,5 +125,14 @@ in LC_TIME = "en_US.UTF-8"; }; }; + + assertions = [ + { + assertion = cfg.formFactor != null; + message = '' + You must set `liminalOS.formFactor` to either "laptop" or "desktop"! + ''; + } + ]; }; } diff --git a/modules/linux/networking/default.nix b/modules/linux/networking/default.nix index 58c7473..7f898e5 100755 --- a/modules/linux/networking/default.nix +++ b/modules/linux/networking/default.nix @@ -19,7 +19,13 @@ let in { options.liminalOS.system.networking = { - enable = lib.mkEnableOption "networking"; + enable = lib.mkOption { + type = lib.types.bool; + default = config.liminalOS.enable; + description = '' + Whether to enable networking features. + ''; + }; firewallPresets = { grimDawn = lib.mkEnableOption "firewall ports for Grim Dawn"; vite = lib.mkEnableOption "firewall ports for Vite"; diff --git a/modules/linux/stylix/default.nix b/modules/linux/stylix/default.nix index cc46bfb..52bf4db 100644 --- a/modules/linux/stylix/default.nix +++ b/modules/linux/stylix/default.nix @@ -10,7 +10,13 @@ let in { options.liminalOS.theming = { - enable = lib.mkEnableOption "theming"; + enable = lib.mkOption { + type = lib.types.bool; + default = config.liminalOS.enable; + description = '' + Whether to uniformly theme the entire system using Stylix. + ''; + }; plymouth.enable = lib.mkOption { type = lib.types.bool; default = cfg.enable; diff --git a/hosts/adrastea/configuration.nix b/reference/hosts/adrastea/configuration.nix similarity index 100% rename from hosts/adrastea/configuration.nix rename to reference/hosts/adrastea/configuration.nix diff --git a/hosts/adrastea/default.nix b/reference/hosts/adrastea/default.nix similarity index 100% rename from hosts/adrastea/default.nix rename to reference/hosts/adrastea/default.nix diff --git a/hosts/adrastea/hardware-configuration.nix b/reference/hosts/adrastea/hardware-configuration.nix similarity index 100% rename from hosts/adrastea/hardware-configuration.nix rename to reference/hosts/adrastea/hardware-configuration.nix diff --git a/hosts/adrastea/home-manager-extras/default.nix b/reference/hosts/adrastea/home-manager-extras/default.nix similarity index 100% rename from hosts/adrastea/home-manager-extras/default.nix rename to reference/hosts/adrastea/home-manager-extras/default.nix diff --git a/hosts/callisto/configuration.nix b/reference/hosts/callisto/configuration.nix similarity index 100% rename from hosts/callisto/configuration.nix rename to reference/hosts/callisto/configuration.nix diff --git a/hosts/callisto/default.nix b/reference/hosts/callisto/default.nix similarity index 100% rename from hosts/callisto/default.nix rename to reference/hosts/callisto/default.nix diff --git a/hosts/callisto/hardware-configuration.nix b/reference/hosts/callisto/hardware-configuration.nix similarity index 100% rename from hosts/callisto/hardware-configuration.nix rename to reference/hosts/callisto/hardware-configuration.nix diff --git a/hosts/callisto/home-manager-extras/default.nix b/reference/hosts/callisto/home-manager-extras/default.nix similarity index 100% rename from hosts/callisto/home-manager-extras/default.nix rename to reference/hosts/callisto/home-manager-extras/default.nix diff --git a/hosts/callisto/home-manager-extras/neofetch-asahi.conf b/reference/hosts/callisto/home-manager-extras/neofetch-asahi.conf similarity index 100% rename from hosts/callisto/home-manager-extras/neofetch-asahi.conf rename to reference/hosts/callisto/home-manager-extras/neofetch-asahi.conf diff --git a/hosts/cassini/configuration.nix b/reference/hosts/cassini/configuration.nix similarity index 100% rename from hosts/cassini/configuration.nix rename to reference/hosts/cassini/configuration.nix diff --git a/hosts/cassini/default.nix b/reference/hosts/cassini/default.nix similarity index 100% rename from hosts/cassini/default.nix rename to reference/hosts/cassini/default.nix diff --git a/hosts/cassini/hardware-configuration.nix b/reference/hosts/cassini/hardware-configuration.nix similarity index 100% rename from hosts/cassini/hardware-configuration.nix rename to reference/hosts/cassini/hardware-configuration.nix diff --git a/hosts/cassini/home-manager-extras/default.nix b/reference/hosts/cassini/home-manager-extras/default.nix similarity index 100% rename from hosts/cassini/home-manager-extras/default.nix rename to reference/hosts/cassini/home-manager-extras/default.nix diff --git a/hosts/demeter/configuration.nix b/reference/hosts/demeter/configuration.nix similarity index 91% rename from hosts/demeter/configuration.nix rename to reference/hosts/demeter/configuration.nix index 7183610..aa63bad 100755 --- a/hosts/demeter/configuration.nix +++ b/reference/hosts/demeter/configuration.nix @@ -2,10 +2,8 @@ # your system. Help is available in the configuration.nix(5) man page # and in the NixOS manual (accessible by running ‘nixos-help’). { - config, inputs, pkgs, - lib, ... }: { @@ -20,20 +18,15 @@ flakeLocation = "/home/youwen/.config/liminalOS"; config.allowUnfree = true; defaultEditor = inputs.viminal.packages.${pkgs.system}.default; + formFactor = "desktop"; system = { audio.prod.enable = true; networking = { - enable = true; firewallPresets.vite = true; cloudflareNameservers.enable = true; }; - graphics = { - enable = true; - nvidia.enable = true; - }; + graphics.nvidia.enable = true; }; - theming.enable = true; - desktop.enable = true; extras.gaming = { enable = true; roblox.enable = true; @@ -42,7 +35,6 @@ gamemodeUsers = [ "youwen" ]; }; }; - programs.flatpak.enable = true; }; time.timeZone = "America/Los_Angeles"; diff --git a/reference/hosts/demeter/default.nix b/reference/hosts/demeter/default.nix new file mode 100644 index 0000000..279603c --- /dev/null +++ b/reference/hosts/demeter/default.nix @@ -0,0 +1,21 @@ +{ + inputs, + ... +}: +{ + imports = + [ + ./configuration.nix + ../../../modules/linux + ../../../hm + ../../../overlays + { + home-manager.users.youwen = { + imports = [ ./home.nix ]; + }; + } + ] + ++ (with inputs; [ + lanzaboote.nixosModules.lanzaboote + ]); +} diff --git a/hosts/demeter/hardware-configuration.nix b/reference/hosts/demeter/hardware-configuration.nix similarity index 100% rename from hosts/demeter/hardware-configuration.nix rename to reference/hosts/demeter/hardware-configuration.nix diff --git a/hosts/demeter/home-manager-extras/default.nix b/reference/hosts/demeter/home.nix similarity index 64% rename from hosts/demeter/home-manager-extras/default.nix rename to reference/hosts/demeter/home.nix index 92e69ee..cc62b90 100644 --- a/hosts/demeter/home-manager-extras/default.nix +++ b/reference/hosts/demeter/home.nix @@ -1,10 +1,13 @@ +{ lib, ... }: { - lib, - ... -}: -{ + imports = [ + ../../../hm/modules + ../../users/youwen + ]; + + home.stateVersion = "24.05"; + wayland.windowManager.hyprland.settings.monitor = [ - # "DP-1,2560x1440@165,1920x0,auto" "DP-1,2560x1440@144,1920x0,auto" "HDMI-A-1,1920x1080@60,0x0,1" ]; diff --git a/hosts/phobos/configuration.nix b/reference/hosts/phobos/configuration.nix similarity index 100% rename from hosts/phobos/configuration.nix rename to reference/hosts/phobos/configuration.nix diff --git a/hosts/phobos/default.nix b/reference/hosts/phobos/default.nix similarity index 100% rename from hosts/phobos/default.nix rename to reference/hosts/phobos/default.nix diff --git a/reference/users/youwen/default.nix b/reference/users/youwen/default.nix new file mode 100644 index 0000000..a133346 --- /dev/null +++ b/reference/users/youwen/default.nix @@ -0,0 +1,23 @@ +{ + imports = [ + ../../../hm/modules + ]; + + home = { + username = "youwen"; + homeDirectory = "/home/youwen"; + }; + + liminalOS = { + utils.easyeffects.enable = true; + }; + + programs.git = { + userName = "Youwen Wu"; + userEmail = "youwenw@gmail.com"; + signing = { + signByDefault = true; + key = "8F5E6C1AF90976CA7102917A865658ED1FE61EC3"; + }; + }; +}