diff --git a/flake.lock b/flake.lock index bbd02284..fc4dbc2f 100644 --- a/flake.lock +++ b/flake.lock @@ -233,11 +233,11 @@ ] }, "locked": { - "lastModified": 1751238705, - "narHash": "sha256-vS6D1vYsjXWhphEzETpmHRE5PbpRsyToWkA3rd3YMns=", + "lastModified": 1751574265, + "narHash": "sha256-C9xLTu5mteVyFEPVqMUyMz4QuI+15709nusXvwEIPVk=", "owner": "nix-community", "repo": "home-manager", - "rev": "4e4faf5cf5dac9c9b489867b9eae11e54dc73a98", + "rev": "5e10cae4f4ba77e8dec241d1e8318b1e2319bb66", "type": "github" }, "original": { @@ -276,11 +276,11 @@ ] }, "locked": { - "lastModified": 1750693392, - "narHash": "sha256-AOQ/ZEyxjezeEX0rMnDMrA0Qns8l18HBifTB02lditc=", + "lastModified": 1751585254, + "narHash": "sha256-YFeyagEyETYK20MZ+mrDjbztLTmeJM0ZcO2zQvyPJkA=", "owner": "comfysage", "repo": "ivy", - "rev": "bcb2966f66cd90d012b71cc77a553388a0a91b49", + "rev": "aaf8dc43958059066d4f13391cd2c89e77b22cb2", "type": "github" }, "original": { diff --git a/home/isabel/cli/gh.nix b/home/isabel/cli/gh.nix index 93936d5f..5ecb0543 100644 --- a/home/isabel/cli/gh.nix +++ b/home/isabel/cli/gh.nix @@ -6,7 +6,7 @@ }: { programs.gh = { - enable = config.garden.programs.git.enable && config.garden.profiles.workstation.enable; + enable = config.programs.git.enable && config.garden.profiles.workstation.enable; extensions = lib.attrValues { inherit (pkgs) diff --git a/home/isabel/cli/git.nix b/home/isabel/cli/git.nix index e03fd5cf..3611c497 100644 --- a/home/isabel/cli/git.nix +++ b/home/isabel/cli/git.nix @@ -9,11 +9,9 @@ let inherit (lib) mkIf mkMerge map; inherit (lib.hm.dag) entryBefore; inherit (self.lib) giturl; - - cfg = config.garden.programs.git; in { - config = mkIf cfg.enable (mkMerge [ + config = mkIf config.programs.git.enable (mkMerge [ (mkIf config.garden.profiles.workstation.enable { garden.packages = { inherit (pkgs) @@ -37,8 +35,7 @@ in { programs.git = { - enable = true; - inherit (cfg) package; + package = pkgs.gitMinimal; userName = "isabel"; userEmail = "isabel" + "@" + "isabelroses" + "." + "com"; # obsfuscate email to prevent webscrapper spam @@ -60,7 +57,6 @@ in # git commit signing signing = { - key = cfg.signingKey; format = "openpgp"; signByDefault = true; }; diff --git a/home/isabel/cli/shell/bash.nix b/home/isabel/cli/shell/bash.nix index 618145de..85c8d825 100644 --- a/home/isabel/cli/shell/bash.nix +++ b/home/isabel/cli/shell/bash.nix @@ -1,7 +1,6 @@ { config, ... }: { programs.bash = { - inherit (config.garden.programs.bash) enable package; enableCompletion = true; historyFile = "${config.xdg.stateHome}/bash/history"; diff --git a/home/isabel/cli/shell/fish.nix b/home/isabel/cli/shell/fish.nix index 4052ddbf..42194aad 100644 --- a/home/isabel/cli/shell/fish.nix +++ b/home/isabel/cli/shell/fish.nix @@ -1,18 +1,9 @@ -{ - lib, - pkgs, - config, - ... -}: +{ lib, pkgs, ... }: let inherit (lib) optionalString; - - cfg = config.garden.programs.fish; in { programs.fish = { - inherit (cfg) enable package; - plugins = [ ]; functions = { diff --git a/home/isabel/cli/shell/zsh.nix b/home/isabel/cli/shell/zsh.nix index f7ba5c89..ad583fb8 100644 --- a/home/isabel/cli/shell/zsh.nix +++ b/home/isabel/cli/shell/zsh.nix @@ -1,13 +1,9 @@ { lib, config, ... }: let inherit (lib) mkOrder removePrefix; - - cfg = config.garden.programs.zsh; in { programs.zsh = { - inherit (cfg) enable package; - autosuggestion.enable = true; # enableCompletion = true; syntaxHighlighting.enable = true; diff --git a/modules/home/packages/chromium.nix b/home/isabel/gui/chromium.nix similarity index 98% rename from modules/home/packages/chromium.nix rename to home/isabel/gui/chromium.nix index d8ce211f..b3279dc0 100644 --- a/modules/home/packages/chromium.nix +++ b/home/isabel/gui/chromium.nix @@ -1,5 +1,6 @@ { lib, + pkgs, config, osConfig, ... @@ -11,12 +12,10 @@ let concatMapStrings enableFeature ; - - cfg = config.garden.programs.chromium; in { programs.chromium = { - inherit (cfg) enable; + inherit (config.garden.profiles.graphical) enable; extensions = [ @@ -32,7 +31,7 @@ in "dnhpnfgdlenaccegplpojghhmaamnnfp" # Augmented Steam ]; - package = cfg.package.override { + package = pkgs.chromium.override { commandLineArgs = concatLists [ # Aesthetics [ diff --git a/home/isabel/gui/default.nix b/home/isabel/gui/default.nix index 6d81be42..0eabf6d2 100644 --- a/home/isabel/gui/default.nix +++ b/home/isabel/gui/default.nix @@ -1,6 +1,7 @@ { imports = [ - ./discord + ./chromium.nix + ./discord.nix ./fht-compositor.nix ./ghostty.nix ./notes.nix diff --git a/home/isabel/gui/discord.nix b/home/isabel/gui/discord.nix new file mode 100644 index 00000000..c5a45c93 --- /dev/null +++ b/home/isabel/gui/discord.nix @@ -0,0 +1,62 @@ +# this is a custom module provided by this flake. it is not in home-manager +{ + programs.discord = { + settings = { + SKIP_HOST_UPDATE = true; + DANGEROUS_ENABLE_DEVTOOLS_ONLY_ENABLE_IF_YOU_KNOW_WHAT_YOUR_DOING = true; + MIN_WIDTH = 940; + MIN_HEIGHT = 500; + openasar = { + setup = true; + quickstart = true; + }; + chromiumSwitches = { }; + IS_MAXIMIZED = true; + IS_MINIMIZED = false; + trayBalloonShown = true; + }; + + moonlight = { + enable = true; + settings = { + extensions = { + moonbase = true; + disableSentry = true; + noTrack = true; + noHideToken = true; + betterCodeblocks = true; + betterEmbedsYT = true; + clearUrls = true; + cloneExpressions = true; + domOptimizer = true; + freeScreenShare = true; + greentext = true; + lastFmRpc = false; + memberCount = true; + onePingPerDM = true; + pronouns = true; + textReplacer = { + enabled = true; + config = { + patterns = { + "://x.com/" = "://fxtwitter.com/"; + "://twitter.com/" = "://fxtwitter.com/"; + "://www.reddit.com/" = "://rxddit.com/"; + "://reddit.com/" = "://rxddit.com/"; + "://www.instagram.com/" = "://ddinstagram.com/"; + "://instagram.com/" = "://ddinstagram.com/"; + "://www.tiktok.com/" = "://tfxktok.com/"; + "://vm.tiktok.com/" = "://vm.vxtiktok.com/"; + "://tiktok.com/" = "://tfxktok.com/"; + "://bsky.app/" = "://fxbsky.app/"; + }; + }; + }; + }; + repositories = [ + "https://moonlight-mod.github.io/extensions-dist/repo.json" + ]; + }; + }; + }; +} diff --git a/home/isabel/gui/discord/default.nix b/home/isabel/gui/discord/default.nix deleted file mode 100644 index 5722fb16..00000000 --- a/home/isabel/gui/discord/default.nix +++ /dev/null @@ -1,71 +0,0 @@ -{ - lib, - pkgs, - config, - osConfig, - ... -}: -let - inherit (lib) mkIf mkMerge; - inherit (pkgs.stdenv.hostPlatform) isLinux isDarwin; - - mkLink = config.lib.file.mkOutOfStoreSymlink; - vencordSettings = "${flakePath}/home/${username}/packages/gui/discord/vencord.json"; - - inherit (osConfig.garden.environment) flakePath; - inherit (config.home) username; - - importToJSON = file: builtins.toJSON (import file); - - settings = importToJSON ./settings.nix; - moonlightSettings = importToJSON ./moonlight.nix; - - cfg = config.garden.programs.discord; -in -{ - config = mkIf cfg.enable (mkMerge [ - { - garden.programs.discord = { - withMoonlight = true; - }; - } - - (mkIf isLinux { - home.packages = [ cfg.package ]; - - xdg.configFile = { - "discord/settings.json".text = settings; - }; - }) - - # (mkIf isDarwin { - # home.file = { - # "Library/Application Support/discord/settings.json".source = settings; - # }; - # }) - - (mkIf (isLinux && cfg.withMoonlight) { - xdg.configFile = { - "moonlight-mod/stable.json".text = moonlightSettings; - }; - }) - - (mkIf (isDarwin && cfg.withMoonlight) { - home.file = { - "Library/Application Support/moonlight-mod/stable.json".text = moonlightSettings; - }; - }) - - (mkIf (isLinux && cfg.withVencord) { - xdg.configFile = { - "Vencord/settings/settings.json".source = mkLink vencordSettings; - }; - }) - - (mkIf (isDarwin && cfg.withVencord) { - home.file = { - "Library/Application Support/Vencord/settings/settings.json".source = mkLink vencordSettings; - }; - }) - ]); -} diff --git a/home/isabel/gui/discord/moonlight.nix b/home/isabel/gui/discord/moonlight.nix deleted file mode 100644 index b33bba2c..00000000 --- a/home/isabel/gui/discord/moonlight.nix +++ /dev/null @@ -1,39 +0,0 @@ -{ - extensions = { - moonbase = true; - disableSentry = true; - noTrack = true; - noHideToken = true; - betterCodeblocks = true; - betterEmbedsYT = true; - clearUrls = true; - cloneExpressions = true; - domOptimizer = true; - freeScreenShare = true; - greentext = true; - lastFmRpc = false; - memberCount = true; - onePingPerDM = true; - pronouns = true; - textReplacer = { - enabled = true; - config = { - patterns = { - "://x.com/" = "://fxtwitter.com/"; - "://twitter.com/" = "://fxtwitter.com/"; - "://www.reddit.com/" = "://rxddit.com/"; - "://reddit.com/" = "://rxddit.com/"; - "://www.instagram.com/" = "://ddinstagram.com/"; - "://instagram.com/" = "://ddinstagram.com/"; - "://www.tiktok.com/" = "://tfxktok.com/"; - "://vm.tiktok.com/" = "://vm.vxtiktok.com/"; - "://tiktok.com/" = "://tfxktok.com/"; - "://bsky.app/" = "://fxbsky.app/"; - }; - }; - }; - }; - repositories = [ - "https://moonlight-mod.github.io/extensions-dist/repo.json" - ]; -} diff --git a/home/isabel/gui/discord/settings.nix b/home/isabel/gui/discord/settings.nix deleted file mode 100644 index 3accb19f..00000000 --- a/home/isabel/gui/discord/settings.nix +++ /dev/null @@ -1,15 +0,0 @@ -{ - SKIP_HOST_UPDATE = true; - DANGEROUS_ENABLE_DEVTOOLS_ONLY_ENABLE_IF_YOU_KNOW_WHAT_YOUR_DOING = true; - MIN_WIDTH = 940; - MIN_HEIGHT = 500; - openasar = { - setup = true; - quickstart = true; - }; - chromiumSwitches = { - }; - IS_MAXIMIZED = true; - IS_MINIMIZED = false; - trayBalloonShown = true; -} diff --git a/home/isabel/gui/discord/vencord.json b/home/isabel/gui/discord/vencord.json deleted file mode 100644 index c50716a3..00000000 --- a/home/isabel/gui/discord/vencord.json +++ /dev/null @@ -1,646 +0,0 @@ -{ - "autoUpdate": true, - "autoUpdateNotification": true, - "useQuickCss": true, - "themeLinks": [], - "enabledThemes": [], - "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": false - }, - "MessagePopoverAPI": { - "enabled": false - }, - "MessageUpdaterAPI": { - "enabled": false - }, - "ServerListAPI": { - "enabled": false - }, - "UserSettingsAPI": { - "enabled": true - }, - "DynamicImageModalAPI": { - "enabled": false - }, - "AccountPanelServerProfile": { - "enabled": false - }, - "AlwaysAnimate": { - "enabled": false - }, - "AlwaysExpandRoles": { - "enabled": false - }, - "AlwaysTrust": { - "enabled": false - }, - "AnonymiseFileNames": { - "enabled": false - }, - "AppleMusicRichPresence": { - "enabled": false - }, - "BANger": { - "enabled": false - }, - "BetterFolders": { - "enabled": false - }, - "BetterGifAltText": { - "enabled": false - }, - "BetterGifPicker": { - "enabled": false - }, - "BetterNotesBox": { - "enabled": false - }, - "BetterRoleContext": { - "enabled": false - }, - "BetterRoleDot": { - "enabled": false - }, - "BetterSessions": { - "enabled": false - }, - "BetterSettings": { - "enabled": false - }, - "BetterUploadButton": { - "enabled": false - }, - "BiggerStreamPreview": { - "enabled": false - }, - "BlurNSFW": { - "enabled": false - }, - "CallTimer": { - "enabled": false - }, - "ClearURLs": { - "enabled": false - }, - "ClientTheme": { - "enabled": false - }, - "ColorSighted": { - "enabled": false - }, - "ConsoleJanitor": { - "enabled": false - }, - "ConsoleShortcuts": { - "enabled": false - }, - "CopyEmojiMarkdown": { - "enabled": false - }, - "CopyFileContents": { - "enabled": false - }, - "CopyUserURLs": { - "enabled": false - }, - "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": true - }, - "Experiments": { - "enabled": true, - "toolbarDevMenu": false - }, - "F8Break": { - "enabled": false - }, - "FakeNitro": { - "enabled": false - }, - "FakeProfileThemes": { - "enabled": false - }, - "FavoriteEmojiFirst": { - "enabled": false - }, - "FavoriteGifSearch": { - "enabled": false - }, - "FixCodeblockGap": { - "enabled": false - }, - "FixImagesQuality": { - "enabled": false - }, - "FixSpotifyEmbeds": { - "enabled": false - }, - "FixYoutubeEmbeds": { - "enabled": false - }, - "ForceOwnerCrown": { - "enabled": false - }, - "FriendInvites": { - "enabled": false - }, - "FriendsSince": { - "enabled": false - }, - "FullSearchContext": { - "enabled": false - }, - "GameActivityToggle": { - "enabled": false - }, - "GifPaste": { - "enabled": false - }, - "GreetStickerPicker": { - "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 - }, - "MemberCount": { - "enabled": true, - "memberList": true, - "toolTip": true - }, - "MentionAvatars": { - "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 - }, - "NoDevtoolsWarning": { - "enabled": false - }, - "NoF1": { - "enabled": false - }, - "NoMaskedUrlPaste": { - "enabled": false - }, - "NoMosaic": { - "enabled": false - }, - "NoOnboardingDelay": { - "enabled": false - }, - "NoPendingCount": { - "enabled": false - }, - "NoProfileThemes": { - "enabled": false - }, - "NoRPC": { - "enabled": false - }, - "NoReplyMention": { - "enabled": false - }, - "NoScreensharePreview": { - "enabled": false - }, - "NoServerEmojis": { - "enabled": false - }, - "NoSystemBadge": { - "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": true - }, - "PlatformIndicators": { - "enabled": false - }, - "PreviewMessage": { - "enabled": false - }, - "QuickMention": { - "enabled": false - }, - "QuickReply": { - "enabled": false - }, - "ReactErrorDecoder": { - "enabled": false - }, - "ReadAllNotificationsButton": { - "enabled": false - }, - "RelationshipNotifier": { - "enabled": false - }, - "ReplaceGoogleSearch": { - "enabled": false - }, - "ReplyTimestamp": { - "enabled": false - }, - "RevealAllSpoilers": { - "enabled": false - }, - "ReverseImageSearch": { - "enabled": false - }, - "ReviewDB": { - "enabled": false - }, - "RoleColorEverywhere": { - "enabled": false - }, - "SecretRingToneEnabler": { - "enabled": false - }, - "Summaries": { - "enabled": false - }, - "SendTimestamps": { - "enabled": false - }, - "ServerInfo": { - "enabled": false - }, - "ServerListIndicators": { - "enabled": false - }, - "ShikiCodeblocks": { - "enabled": true, - "useDevIcon": "GREYSCALE", - "theme": "https://raw.githubusercontent.com/shikijs/textmate-grammars-themes/2d87559c7601a928b9f7e0f0dda243d2fb6d4499/packages/tm-themes/themes/dark-plus.json" - }, - "ShowAllMessageButtons": { - "enabled": false - }, - "ShowConnections": { - "enabled": false - }, - "ShowHiddenChannels": { - "enabled": false - }, - "ShowHiddenThings": { - "enabled": false - }, - "ShowMeYourName": { - "enabled": false - }, - "ShowTimeoutDuration": { - "enabled": false - }, - "SilentMessageToggle": { - "enabled": false - }, - "SilentTyping": { - "enabled": false - }, - "SortFriendRequests": { - "enabled": false - }, - "SpotifyControls": { - "enabled": false - }, - "SpotifyCrack": { - "enabled": false - }, - "SpotifyShareCommands": { - "enabled": false - }, - "StartupTimings": { - "enabled": false - }, - "StickerPaste": { - "enabled": false - }, - "StreamerModeOnStream": { - "enabled": false - }, - "SuperReactionTweaks": { - "enabled": false - }, - "TextReplace": { - "enabled": true, - "stringRules": [ - { - "find": "https://x.com", - "replace": "https://fxtwitter.com", - "onlyIfIncludes": "" - }, - { - "find": "https://twitter.com", - "replace": "https://fxtwitter.com", - "onlyIfIncludes": "" - }, - { - "find": "https://www.reddit.com", - "replace": "https://rxddit.com", - "onlyIfIncludes": "" - }, - { - "find": "https://reddit.com", - "replace": "https://rxddit.com", - "onlyIfIncludes": "" - }, - { - "find": "https://www.instagram.com", - "replace": "https://ddinstagram.com", - "onlyIfIncludes": "" - }, - { - "find": "https://instagram.com", - "replace": "https://ddinstagram.com", - "onlyIfIncludes": "" - }, - { - "find": "https://www.tiktok.com", - "replace": "https://tfxktok.com", - "onlyIfIncludes": "" - }, - { - "find": "https://vm.tiktok.com", - "replace": "https://vm.vxtiktok.com", - "onlyIfIncludes": "" - }, - { - "find": "https://tiktok.com", - "replace": "https://tfxktok.com", - "onlyIfIncludes": "" - }, - { - "find": "https://bsky.app", - "replace": "https://fxbsky.app", - "onlyIfIncludes": "" - }, - { - "find": "", - "replace": "", - "onlyIfIncludes": "" - } - ], - "regexRules": [ - { - "find": "", - "replace": "", - "onlyIfIncludes": "" - } - ] - }, - "ThemeAttributes": { - "enabled": false - }, - "Translate": { - "enabled": false - }, - "TypingIndicator": { - "enabled": false - }, - "TypingTweaks": { - "enabled": false - }, - "Unindent": { - "enabled": false - }, - "UnlockedAvatarZoom": { - "enabled": false - }, - "UnsuppressEmbeds": { - "enabled": false - }, - "UserMessagesPronouns": { - "enabled": false - }, - "UserVoiceShow": { - "enabled": false - }, - "USRBG": { - "enabled": false - }, - "ValidReply": { - "enabled": false - }, - "ValidUser": { - "enabled": false - }, - "VoiceChatDoubleClick": { - "enabled": false - }, - "VcNarrator": { - "enabled": false - }, - "VencordToolbox": { - "enabled": false - }, - "ViewIcons": { - "enabled": false - }, - "ViewRaw": { - "enabled": false - }, - "VoiceDownload": { - "enabled": false - }, - "VoiceMessages": { - "enabled": false - }, - "VolumeBooster": { - "enabled": true, - "multiplier": 2 - }, - "WhoReacted": { - "enabled": false - }, - "XSOverlay": { - "enabled": false - }, - "YoutubeAdblock": { - "enabled": false - }, - "NoTrack": { - "enabled": true, - "disableAnalytics": true - }, - "Settings": { - "enabled": true, - "settingsLocation": "aboveNitro" - }, - "SupportHelper": { - "enabled": true - }, - "HideMedia": { - "enabled": false - }, - "FullUserInChatbox": { - "enabled": false - }, - "IrcColors": { - "enabled": false - }, - "BadgeAPI": { - "enabled": true - } - }, - "notifications": { - "timeout": 5000, - "position": "bottom-right", - "useNative": "not-focused", - "logLimit": 50 - }, - "cloud": { - "authenticated": false, - "url": "https://api.vencord.dev/", - "settingsSync": false, - "settingsSyncVersion": 1745339228606 - }, - "eagerPatches": false -} \ No newline at end of file diff --git a/home/isabel/gui/fht-compositor.nix b/home/isabel/gui/fht-compositor.nix index b5757313..039aba5f 100644 --- a/home/isabel/gui/fht-compositor.nix +++ b/home/isabel/gui/fht-compositor.nix @@ -12,20 +12,18 @@ in { imports = [ inputs.fht-compositor.homeModules.default ]; - config = lib.mkIf config.garden.programs.fht-compositor.enable { + config = lib.mkIf config.programs.fht-compositor.enable { garden.packages = { inherit (pkgs) cosmic-files; }; programs.fht-compositor = { - enable = true; settings = { cursor = { inherit (config.home.pointerCursor) name size; }; autostart = [ "wl-paste --type text --watch cliphist store" # Stores only text data "wl-paste --type image --watch cliphist store" # Stores only image data - "quickshell" ]; input.keyboard = { diff --git a/home/isabel/gui/ghostty.nix b/home/isabel/gui/ghostty.nix index 48cb6764..a261d93f 100644 --- a/home/isabel/gui/ghostty.nix +++ b/home/isabel/gui/ghostty.nix @@ -1,13 +1,8 @@ { pkgs, config, ... }: -let - cfg = config.garden.programs.ghostty; -in { programs.ghostty = { - inherit (cfg) enable; - # FIXME: ghostty is broken on darwin - package = if pkgs.stdenv.hostPlatform.isLinux then cfg.package else null; + package = if pkgs.stdenv.hostPlatform.isLinux then pkgs.ghostty else null; settings = { command = "/etc/profiles/per-user/isabel/bin/fish --login"; diff --git a/home/isabel/gui/notes.nix b/home/isabel/gui/notes.nix index 4b628093..34c45572 100644 --- a/home/isabel/gui/notes.nix +++ b/home/isabel/gui/notes.nix @@ -10,71 +10,78 @@ let inherit (config.garden.programs) defaults; in { - config = { - garden.programs = { - obsidian.runtimeInputs = attrValues { - inherit (pkgs) - # for the pandoc plugin - pandoc + config = lib.mkIf config.garden.profiles.workstation.enable { + garden.packages = { + obsidian = pkgs.symlinkJoin { + name = "obsidian-wrapped"; + paths = attrValues { + inherit (pkgs) + # for the pandoc plugin + pandoc - # for the obsidian-git plugin - gitMinimal - git-lfs - ; + # for the obsidian-git plugin + gitMinimal + git-lfs + ; + }; + meta.mainProgram = pkgs.obsidian.meta.mainProgram; }; }; - programs.zk.settings = { - note = { - # The default title used for new note, if no `--title` flag is provided. - default-title = "untitled"; + programs.zk = { + enable = true; + settings = { + note = { + # The default title used for new note, if no `--title` flag is provided. + default-title = "untitled"; - # The charset used for random IDs. You can use: - # * letters: only letters from a to z. - # * numbers: 0 to 9 - # * alphanum: letters + numbers - # * hex: hexadecimal, from a to f and 0 to 9 - # * custom string: will use any character from the provided value - id-charset = "hex"; + # The charset used for random IDs. You can use: + # * letters: only letters from a to z. + # * numbers: 0 to 9 + # * alphanum: letters + numbers + # * hex: hexadecimal, from a to f and 0 to 9 + # * custom string: will use any character from the provided value + id-charset = "hex"; - # Length of the generated IDs. - id-length = 6; - }; + # Length of the generated IDs. + id-length = 6; + }; - tool = { - inherit (defaults) editor; - pager = "bat"; + tool = { + inherit (defaults) editor; + pager = "bat"; - # Command used to preview a note during interactive fzf mode. - # Set it to an empty string "" to disable preview. - fzf-preview = "bat -p --color always {-1}"; - }; + # Command used to preview a note during interactive fzf mode. + # Set it to an empty string "" to disable preview. + fzf-preview = "bat -p --color always {-1}"; + }; - alias = { - list = "zk list --quiet -f oneline $@"; - ls = "zk list $@"; - wc = "zk list --sort word-count $@"; + alias = { + list = "zk list --quiet -f oneline $@"; + ls = "zk list $@"; + wc = "zk list --sort word-count $@"; - search = "zk list -i $@"; + search = "zk list -i $@"; - # Edit the last modified note. - editlast = "zk edit --limit 1 --sort modified- $@"; + # Edit the last modified note. + editlast = "zk edit --limit 1 --sort modified- $@"; - # Edit the notes selected interactively among the notes created the last two weeks. - # This alias doesn't take any argument, so we don't use $@. - recent = "zk edit --sort created- --created-after 'last two weeks' --interactive"; + # Edit the notes selected interactively among the notes created the last two weeks. + # This alias doesn't take any argument, so we don't use $@. + recent = "zk edit --sort created- --created-after 'last two weeks' --interactive"; - # Print paths separated with colons for the notes found with the given - # arguments. This can be useful to expand a complex search query into a flag - # taking only paths. For example: - # zk list --link-to "`zk path -m potato`" - path = "zk list --quiet --format {{path}} --delimiter , $@"; + # Print paths separated with colons for the notes found with the given + # arguments. This can be useful to expand a complex search query into a flag + # taking only paths. For example: + # zk list --link-to "`zk path -m potato`" + path = "zk list --quiet --format {{path}} --delimiter , $@"; - # Returns the Git history for the notes found with the given arguments. - # Note the use of a pipe and the location of $@. - hist = "zk list --format path --delimiter0 --quiet $@ | xargs -t -0 git log --patch --"; + # Returns the Git history for the notes found with the given arguments. + # Note the use of a pipe and the location of $@. + hist = "zk list --format path --delimiter0 --quiet $@ | xargs -t -0 git log --patch --"; - tags = "zk tag list $@"; + tags = "zk tag list $@"; + }; }; }; }; diff --git a/home/isabel/gui/quickshell.nix b/home/isabel/gui/quickshell.nix index 2ba2f093..c567ac79 100644 --- a/home/isabel/gui/quickshell.nix +++ b/home/isabel/gui/quickshell.nix @@ -1,24 +1,15 @@ +{ pkgs, ... }: { - lib, - pkgs, - config, - ... -}: -let - cfg = config.garden.programs.quickshell; -in -{ - config = lib.mkIf config.garden.programs.quickshell.enable { - garden.programs.quickshell.package = pkgs.symlinkJoin { + programs.quickshell = { + package = pkgs.symlinkJoin { name = "quickshell-wrapped"; paths = [ pkgs.quickshell pkgs.kdePackages.qtimageformats ]; + meta.mainProgram = pkgs.quickshell.meta.mainProgram; }; - garden.packages = { - quickshell = cfg.package; - }; + systemd.enable = true; }; } diff --git a/home/isabel/gui/wezterm.nix b/home/isabel/gui/wezterm.nix index 99d8a2e4..863dd920 100644 --- a/home/isabel/gui/wezterm.nix +++ b/home/isabel/gui/wezterm.nix @@ -1,18 +1,8 @@ { - lib, - config, - ... -}: -let - cfg = config.garden.programs.wezterm; -in -{ - config = lib.mkIf cfg.enable { - home.packages = [ cfg.package ]; + catppuccin.wezterm.enable = false; - xdg.configFile."wezterm" = { - source = ./wezterm; - recursive = true; - }; + xdg.configFile."wezterm" = { + source = ./wezterm; + recursive = true; }; } diff --git a/home/isabel/tui/lazygit.nix b/home/isabel/tui/lazygit.nix index 03175166..f0968b25 100644 --- a/home/isabel/tui/lazygit.nix +++ b/home/isabel/tui/lazygit.nix @@ -10,7 +10,7 @@ let configFile = "${config.xdg.configHome}/lazygit/config.yml"; - cond = config.garden.profiles.workstation.enable && config.garden.programs.git.enable; + cond = config.garden.profiles.workstation.enable && config.programs.git.enable; in { config = mkIf cond { diff --git a/home/isabel/tui/neovim.nix b/home/isabel/tui/neovim.nix index 11a1a29a..5b093f99 100644 --- a/home/isabel/tui/neovim.nix +++ b/home/isabel/tui/neovim.nix @@ -4,8 +4,6 @@ inputs.izvim.homeModules.default ]; - garden.programs.neovim.enable = false; - programs.izvim = { enable = true; includePerLanguageTooling = config.garden.profiles.workstation.enable; diff --git a/home/robin/cli/gh.nix b/home/robin/cli/gh.nix index 97a2529e..16fd1a45 100644 --- a/home/robin/cli/gh.nix +++ b/home/robin/cli/gh.nix @@ -2,7 +2,7 @@ { config = { programs.gh = { - enable = config.garden.programs.git.enable && config.garden.profiles.workstation.enable; + enable = config.programs.git.enable && config.garden.profiles.workstation.enable; settings = { git_protocol = "ssh"; diff --git a/home/robin/cli/git.nix b/home/robin/cli/git.nix index 3af84726..a817d26d 100644 --- a/home/robin/cli/git.nix +++ b/home/robin/cli/git.nix @@ -10,7 +10,7 @@ let inherit (self.lib) giturl; inherit (lib.hm.dag) entryBefore; - cfg = config.garden.programs.git; + cfg = config.programs.git; in { config = mkIf cfg.enable (mkMerge [ @@ -36,8 +36,7 @@ in { programs.git = { - enable = true; - inherit (cfg) package; + package = pkgs.gitMinimal; userName = "robin"; userEmail = "comfysage" + "@" + "isabelroses" + "." + "com"; diff --git a/home/robin/cli/goc.nix b/home/robin/cli/goc.nix index ace93718..42486708 100644 --- a/home/robin/cli/goc.nix +++ b/home/robin/cli/goc.nix @@ -1,10 +1,16 @@ -{ lib, config, ... }: +{ + lib, + pkgs, + config, + ... +}: let inherit (lib) mkIf; - cfg = config.garden.programs.cocogitto; in { - config = mkIf cfg.enable { - home.packages = [ cfg.package ]; + config = mkIf config.programs.git.enable { + garden.packages = { + inherit (pkgs) cocogitto; + }; }; } diff --git a/home/robin/cli/jj.nix b/home/robin/cli/jj.nix index 30a2a654..30fc6ff1 100644 --- a/home/robin/cli/jj.nix +++ b/home/robin/cli/jj.nix @@ -5,7 +5,7 @@ }: { programs.jujutsu = { - inherit (config.garden.profiles.workstation) enable; + enable = config.programs.git.enable && config.garden.profiles.workstation.enable; settings = { user = { diff --git a/home/robin/cli/shell/bash.nix b/home/robin/cli/shell/bash.nix index 618145de..f2443984 100644 --- a/home/robin/cli/shell/bash.nix +++ b/home/robin/cli/shell/bash.nix @@ -1,7 +1,7 @@ { config, ... }: { programs.bash = { - inherit (config.garden.programs.bash) enable package; + enable = true; enableCompletion = true; historyFile = "${config.xdg.stateHome}/bash/history"; diff --git a/home/robin/cli/shell/fish.nix b/home/robin/cli/shell/fish.nix index 6e449f5f..bc973c44 100644 --- a/home/robin/cli/shell/fish.nix +++ b/home/robin/cli/shell/fish.nix @@ -19,7 +19,6 @@ let in { programs.fish = { - inherit (config.garden.programs.fish) enable; plugins = [ ]; functions = { diff --git a/home/robin/cli/shell/zsh.nix b/home/robin/cli/shell/zsh.nix index 36682aa9..a4639adf 100644 --- a/home/robin/cli/shell/zsh.nix +++ b/home/robin/cli/shell/zsh.nix @@ -1,13 +1,9 @@ { lib, config, ... }: let inherit (lib) mkOrder removePrefix; - - cfg = config.garden.programs.zsh; in { programs.zsh = { - inherit (cfg) enable package; - autosuggestion.enable = true; enableCompletion = true; syntaxHighlighting.enable = true; diff --git a/home/robin/cli/starship.nix b/home/robin/cli/starship.nix index 4cfda931..cf799b65 100644 --- a/home/robin/cli/starship.nix +++ b/home/robin/cli/starship.nix @@ -1,6 +1,5 @@ { config, ... }: let - # TODO: come back and change this a bit ss = symbol: style: { inherit symbol; format = "[$symbol ](${style})"; diff --git a/home/robin/cli/typst.nix b/home/robin/cli/typst.nix index f2db4f34..3e750513 100644 --- a/home/robin/cli/typst.nix +++ b/home/robin/cli/typst.nix @@ -8,7 +8,7 @@ let inherit (lib) mkIf; in { - config = mkIf config.garden.programs.notes.enable { + config = mkIf config.garden.profiles.workstation.enable { garden.packages = { inherit (pkgs) typst; }; diff --git a/home/robin/cli/zk.nix b/home/robin/cli/zk.nix index 1e6841ee..1bc662da 100644 --- a/home/robin/cli/zk.nix +++ b/home/robin/cli/zk.nix @@ -9,11 +9,12 @@ let inherit (config.garden.programs) defaults; in { - config = mkIf config.garden.programs.notes.enable { + config = mkIf config.garden.profiles.workstation.enable { programs = { bat.enable = true; zk.settings = { + enable = true; note = { # The default title used for new note, if no `--title` flag is provided. default-title = "untitled"; diff --git a/home/robin/gui/default.nix b/home/robin/gui/default.nix index 39e898f4..355aeacd 100644 --- a/home/robin/gui/default.nix +++ b/home/robin/gui/default.nix @@ -1,10 +1,7 @@ { imports = [ ./hyprland - ./discord.nix ./ghostty.nix ./obsidian.nix - ./rofi.nix - ./waybar.nix ]; } diff --git a/home/robin/gui/discord.nix b/home/robin/gui/discord.nix deleted file mode 100644 index 99a638d7..00000000 --- a/home/robin/gui/discord.nix +++ /dev/null @@ -1,34 +0,0 @@ -{ - lib, - pkgs, - config, - ... -}: -let - inherit (lib) mkIf; - cfg = config.garden.programs.discord; -in -{ - config = mkIf cfg.enable { - home.packages = mkIf pkgs.stdenv.hostPlatform.isLinux [ - cfg.package - ]; - - # xdg.configFile."discord/settings.json".text = '' - # { - # "SKIP_HOST_UPDATE": true, - # "DANGEROUS_ENABLE_DEVTOOLS_ONLY_ENABLE_IF_YOU_KNOW_WHAT_YOUR_DOING": true, - # "MIN_WIDTH": 940, - # "MIN_HEIGHT": 500, - # "openasar": { - # "setup": true, - # "quickstart": true - # }, - # "chromiumSwitches": {}, - # "IS_MAXIMIZED": true, - # "IS_MINIMIZED": false, - # "trayBalloonShown": true - # } - # ''; - }; -} diff --git a/home/robin/gui/ghostty.nix b/home/robin/gui/ghostty.nix index baba3b5c..17a1e7bb 100644 --- a/home/robin/gui/ghostty.nix +++ b/home/robin/gui/ghostty.nix @@ -1,20 +1,8 @@ +{ pkgs, config, ... }: { - lib, - pkgs, - config, - ... -}: -let - inherit (lib) mkIf; - - cfg = config.garden.programs.ghostty; -in -{ - programs.ghostty = mkIf cfg.enable { - enable = true; - + programs.ghostty = { # FIXME: ghostty is broken on darwin - package = if pkgs.stdenv.hostPlatform.isLinux then cfg.package else null; + package = if pkgs.stdenv.hostPlatform.isLinux then pkgs.ghostty else null; settings = { command = "/etc/profiles/per-user/robin/bin/fish --login"; diff --git a/home/robin/gui/hyprland/default.nix b/home/robin/gui/hyprland/default.nix index 59affea8..bd1df0af 100644 --- a/home/robin/gui/hyprland/default.nix +++ b/home/robin/gui/hyprland/default.nix @@ -5,11 +5,17 @@ ... }: let - cfg = config.garden.programs.hyprland; + cfg = config.programs.hyprland; in { imports = [ ./config ]; + options = { + programs.hyprland = { + enable = lib.mkEnableOption "Hyprland window manager"; + }; + }; + config = lib.mkIf cfg.enable { garden.packages = { inherit (pkgs) swww hyprpicker; }; @@ -17,8 +23,6 @@ in enable = true; xwayland.enable = true; - inherit (cfg) package; - systemd = { enable = true; variables = [ "--all" ]; diff --git a/home/robin/gui/obsidian.nix b/home/robin/gui/obsidian.nix index 1c475f3f..ee152d2b 100644 --- a/home/robin/gui/obsidian.nix +++ b/home/robin/gui/obsidian.nix @@ -5,19 +5,23 @@ ... }: let - inherit (lib) attrValues; + inherit (lib) attrValues mkIf; in { - config.garden.programs = { - obsidian.runtimeInputs = attrValues { - inherit (pkgs) - # for the pandoc plugin - pandoc + garden.packages = mkIf config.garden.profiles.workstation.enable { + obsidian = pkgs.symlinkJoin { + name = "obsidian-wrapped"; + paths = attrValues { + inherit (pkgs) + # for the pandoc plugin + pandoc - # for the obsidian-git plugin - git - git-lfs - ; + # for the obsidian-git plugin + git + git-lfs + ; + }; + meta.mainProgram = pkgs.obsidian.meta.mainProgram; }; }; } diff --git a/home/robin/gui/rofi.nix b/home/robin/gui/rofi.nix deleted file mode 100644 index c163e171..00000000 --- a/home/robin/gui/rofi.nix +++ /dev/null @@ -1,136 +0,0 @@ -{ - config, - ... -}: -let - inherit (config.garden.programs) defaults; - - cfg = config.garden.programs.rofi; -in -{ - programs.rofi = { - inherit (cfg) enable package; - - extraConfig = { - modi = "drun"; - icon-theme = "Papirus-Dark"; - show-icons = true; - inherit (defaults) terminal; - location = 0; - disable-history = false; - hide-scrollbar = true; - sidebar-mode = true; - font = - let - fn = config.garden.style.fonts; - in - "${fn.name} ${toString fn.size}"; - display-drun = "Apps"; - drun-display-format = "{name}"; - }; - - theme = - let - inherit (config.lib.formats.rasi) mkLiteral; - in - { - "*" = { - bg-col = mkLiteral "#1e1e2e"; - bg-col-light = mkLiteral "#1e1e2e"; - border-col = mkLiteral "#313244"; - selected-col = mkLiteral "#1e1e2e"; - sapphire = mkLiteral "#74c7ec"; - fg-col = mkLiteral "#cdd6f4"; - fg-col2 = mkLiteral "@sapphire"; - grey = mkLiteral "#a6adc8"; - - width = mkLiteral "450px"; - }; - - "element-text, element-icon , mode-switcher" = { - background-color = mkLiteral "inherit"; - text-color = mkLiteral "inherit"; - }; - - "window" = { - height = mkLiteral "500px"; - border = mkLiteral "3px"; - border-radius = mkLiteral "15px"; - border-color = mkLiteral "@border-col"; - background-color = mkLiteral "@bg-col"; - }; - - "mainbox" = { - background-color = mkLiteral "@bg-col"; - }; - - inputbar = { - children = mkLiteral "[prompt,entry]"; - background-color = mkLiteral "@bg-col"; - border-radius = mkLiteral "15px"; - padding = mkLiteral "2px"; - }; - - prompt = { - background-color = mkLiteral "@sapphire"; - padding = mkLiteral "6px"; - text-color = mkLiteral "@bg-col"; - border-radius = mkLiteral "15px"; - margin = mkLiteral "20px 0px 0px 20px"; - }; - - textbox-prompt-colon = { - expand = false; - str = ":"; - }; - - entry = { - padding = mkLiteral "6px"; - margin = mkLiteral "20px 0px 0px 10px"; - text-color = mkLiteral "@fg-col"; - background-color = mkLiteral "@bg-col"; - }; - - listview = { - border = mkLiteral "0px 0px 0px"; - padding = mkLiteral "6px 0px 0px"; - margin = mkLiteral "10px 0px 0px 20px"; - columns = 1; - lines = 10; - background-color = mkLiteral "@bg-col"; - }; - - element = { - padding = mkLiteral "5px"; - background-color = mkLiteral "@bg-col"; - text-color = mkLiteral "@fg-col"; - }; - - element-icon = { - size = mkLiteral "25px"; - }; - - "element selected" = { - background-color = mkLiteral "@selected-col"; - text-color = mkLiteral "@fg-col2"; - }; - - mode-switcher = { - spacing = 0; - }; - - button = { - padding = mkLiteral "10px"; - background-color = mkLiteral "@bg-col-light"; - text-color = mkLiteral "@grey"; - vertical-align = mkLiteral "0.5"; - horizontal-align = mkLiteral "0.5"; - }; - - "button selected" = { - background-color = mkLiteral "@bg-col"; - text-color = mkLiteral "@sapphire"; - }; - }; - }; -} diff --git a/home/robin/gui/waybar.nix b/home/robin/gui/waybar.nix deleted file mode 100644 index ec91e12d..00000000 --- a/home/robin/gui/waybar.nix +++ /dev/null @@ -1,220 +0,0 @@ -{ - lib, - pkgs, - config, - ... -}: -let - inherit (lib) mkIf; - - inherit (config.garden.style) font; - cfg = config.garden.programs.waybar; -in -{ - config = mkIf cfg.enable { - home.packages = [ pkgs.wlogout ]; - - programs.waybar = { - enable = true; - inherit (cfg) package; - - systemd.enable = true; - - settings.mainBar = { - layer = "top"; - position = "top"; - height = 5; - - spacing = 5; - margin-top = 0; - margin-bottom = 0; - margin-left = 2; - margin-right = 2; - - modules-left = [ - "custom/launcher" - "hyprland/workspaces" - ]; - modules-center = [ "clock" ]; - modules-right = [ - "wireplumber" - "battery" - "tray" - ]; - - "hyprland/workspaces" = { - disable-scroll = true; - all-outputs = true; - active-only = false; - on-click = "activate"; - format = "{icon}"; - format-icons = { - "1" = "一"; - "2" = "二"; - "3" = "三"; - "4" = "四"; - "5" = "五"; - "6" = "六"; - "7" = "七"; - "8" = "八"; - "9" = "九"; - "10" = "十"; - sort-by-number = true; - }; - }; - - tray = { - icon-size = 20; - spacing = 8; - }; - - clock = { - format = "{: %R}"; - tooltip-format = "{:%Y %B}\n{calendar}"; - }; - - wireplumber = { - format = "{volume}% {icon}"; - tooltip = false; - format-muted = "󰝟"; - on-click = lib.getExe pkgs.pwvucontrol; - on-scroll-up = "wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%+"; - on-scroll-down = "wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%-"; - scroll-step = 5; - format-icons = { - headphone = ""; - hands-free = ""; - headset = ""; - phone = ""; - portable = ""; - car = ""; - default = [ - "" - "" - "" - ]; - }; - }; - - network = { - interface = "wlo1"; - format-wifi = ""; - format-ethernet = ""; - tooltip-format = "{essid} ({signalStrength}%)"; - format-linked = "{ifname} (No IP) "; - format-disconnected = "⚠"; - format-alt = "{ifname} = {ipaddr}/{cidr}"; - }; - - battery = { - states = { - good = 95; - warning = 30; - critical = 20; - }; - format = "{icon} {capacity}%"; - format-charging = " {capacity}%"; - format-plugged = " {capacity}%"; - format-alt = "{time} {icon}"; - format-icons = [ - "󰁺" - "󰁻" - "󰁼" - "󰁽" - "󰁾" - "󰁿" - "󰂀" - "󰂁" - "󰂂" - "󰁹" - ]; - }; - "custom/launcher" = { - format = ""; - on-click = "pkill rofi || rofi -show drun -show-icons"; - on-click-right = "pkill rofi || rofi -show drun -show-icons"; - tooltip = "false"; - }; - }; - - style = - let - custom = { - font_weight = "bold"; - text_color = "#cdd6f4"; - secondary_accent = "#89b4fa"; - tertiary_accent = "#f5f5f5"; - background = "#11111B"; - opacity = "0.98"; - }; - in - '' - * { - border: none; - border-radius: 0px; - padding: 0; - margin: 0; - min-height: 0px; - font-family: ${font.name}; - font-weight: ${custom.font_weight}; - opacity: ${custom.opacity}; - } - - window#waybar { - background: none; - } - - #workspaces { - font-size: ${toString font.size}px; - padding-left: 15px; - } - #workspaces button { - color: ${custom.text_color}; - padding-left: 6px; - padding-right: 6px; - } - #workspaces button.empty { - color: #6c7086; - } - #workspaces button.active { - color: #b4befe; - } - - #tray, #wireplumber, #network, #cpu, #custom-temperature, #disk, #clock { - font-size: ${toString font.size}px; - color: ${custom.text_color}; - } - - #tray { - padding: 0 16px; - padding-right: 12px; - margin-left: 7px; - } - - #wireplumber { - font-size: ${toString font.size}px; - padding-left: 15px; - padding-right: 9px; - margin-left: 7px; - } - #network { - padding-left: 9px; - padding-right: 15px; - } - - #clock { - padding-left: 9px; - padding-right: 15px; - } - - #custom-launcher { - font-size: 18px; - color: #b4befe; - font-weight: ${custom.font_weight}; - padding-left: 10px; - padding-right: 12px; - } - ''; - }; - }; -} diff --git a/home/robin/tui/neovim.nix b/home/robin/tui/neovim.nix index 2f536c1c..f70e00df 100644 --- a/home/robin/tui/neovim.nix +++ b/home/robin/tui/neovim.nix @@ -1,13 +1,12 @@ +{ inputs, config, ... }: { - lib, - config, - ... -}: -let - inherit (lib) optional; + imports = [ + inputs.ivy.homeModules.default + ]; - cfg = config.garden.programs.neovim; -in -{ - home.packages = optional cfg.enable cfg.package ++ optional cfg.gui.enable cfg.gui.package; + programs.ivy = { + enable = true; + includePerLanguageTooling = config.garden.profiles.workstation.enable; + gui.enable = config.garden.profiles.graphical.enable; + }; } diff --git a/modules/flake/lib/default.nix b/modules/flake/lib/default.nix index e835a53d..708e0c2f 100644 --- a/modules/flake/lib/default.nix +++ b/modules/flake/lib/default.nix @@ -7,7 +7,6 @@ let template = import ./template; # templates, selections of code that are repeated hardware = import ./hardware.nix; helpers = import ./helpers.nix { inherit lib; }; - programs = import ./programs.nix { inherit lib; }; secrets = import ./secrets.nix { inherit inputs; }; services = import ./services.nix { inherit lib; }; validators = import ./validators.nix { inherit lib; }; @@ -27,7 +26,6 @@ let indexOf intListToStringList ; - inherit (final.programs) mkProgram; inherit (final.secrets) mkUserSecret mkSystemSecret; inherit (final.services) mkGraphicalService mkHyprlandService mkServiceOption; inherit (final.validators) diff --git a/modules/flake/lib/programs.nix b/modules/flake/lib/programs.nix deleted file mode 100644 index aa2bbb94..00000000 --- a/modules/flake/lib/programs.nix +++ /dev/null @@ -1,15 +0,0 @@ -{ lib }: -let - inherit (lib.options) mkEnableOption mkPackageOption; - inherit (lib.attrsets) recursiveUpdate; - - mkProgram = - pkgs: name: extraConfig: - recursiveUpdate { - enable = mkEnableOption "Enable ${name}"; - package = mkPackageOption pkgs name { }; - } extraConfig; -in -{ - inherit mkProgram; -} diff --git a/modules/flake/packages/docs/lib.nix b/modules/flake/packages/docs/lib.nix index ad161b08..922d728f 100644 --- a/modules/flake/packages/docs/lib.nix +++ b/modules/flake/packages/docs/lib.nix @@ -13,10 +13,6 @@ name = "helpers"; description = "helpers"; } - { - name = "programs"; - description = "programs"; - } { name = "secrets"; description = "secrets"; diff --git a/modules/home/default.nix b/modules/home/default.nix index ca2e320d..7475a1c5 100644 --- a/modules/home/default.nix +++ b/modules/home/default.nix @@ -3,8 +3,7 @@ ../generic ./environment # environment variables & path - ./packages # pre-configured packages - ./programs # options to configure programs + ./programs # ways to configure packages ./themes # themes for applications ./docs.nix # no more docs ./extras.nix # modules that are not in this repo, and don't have a nice place to be imported in diff --git a/modules/home/packages/default.nix b/modules/home/packages/default.nix deleted file mode 100644 index ac6bc72d..00000000 --- a/modules/home/packages/default.nix +++ /dev/null @@ -1,7 +0,0 @@ -{ - imports = [ - ./chromium.nix - ./direnv.nix - ./pentesting.nix - ]; -} diff --git a/modules/home/profiles.nix b/modules/home/profiles.nix index 284679e7..ccbb66d1 100644 --- a/modules/home/profiles.nix +++ b/modules/home/profiles.nix @@ -1,4 +1,4 @@ -{ osConfig, ... }: +{ lib, osConfig, ... }: let cfg = osConfig.garden.profiles; in @@ -19,4 +19,6 @@ in hetzner.enable = cfg.server.hetzner.enable; }; }; + + programs.git.enable = lib.mkDefault cfg.workstation.enable; } diff --git a/modules/home/programs/bars.nix b/modules/home/programs/bars.nix deleted file mode 100644 index d52bed16..00000000 --- a/modules/home/programs/bars.nix +++ /dev/null @@ -1,15 +0,0 @@ -{ - self, - pkgs, - ... -}: -let - inherit (self.lib) mkProgram; -in -{ - options.garden.programs = { - waybar = mkProgram pkgs "waybar" { }; - - quickshell = mkProgram pkgs "quickshell" { }; - }; -} diff --git a/modules/home/programs/browsers.nix b/modules/home/programs/browsers.nix deleted file mode 100644 index 5520aa08..00000000 --- a/modules/home/programs/browsers.nix +++ /dev/null @@ -1,15 +0,0 @@ -{ self, pkgs, ... }: -let - inherit (self.lib) mkProgram; -in -{ - options.garden.programs = { - chromium = mkProgram pkgs "chromium" { }; - - firefox = mkProgram pkgs "firefox" { - package.default = pkgs.firefox.override { - speechSynthesisSupport = false; - }; - }; - }; -} diff --git a/modules/home/programs/default.nix b/modules/home/programs/default.nix index 2a5e4a20..c15fc3d5 100644 --- a/modules/home/programs/default.nix +++ b/modules/home/programs/default.nix @@ -1,16 +1,8 @@ { imports = [ - ./defaults.nix # what are our default applications - ./bars.nix - ./browsers.nix - ./editors.nix - ./editors.nix - ./git.nix - ./launchers.nix - ./misc.nix - ./notes.nix - ./shells.nix - ./terminals.nix - ./wm.nix + ./direnv.nix + ./defaults.nix + ./discord.nix + ./pentesting.nix ]; } diff --git a/modules/home/packages/direnv.nix b/modules/home/programs/direnv.nix similarity index 100% rename from modules/home/packages/direnv.nix rename to modules/home/programs/direnv.nix diff --git a/modules/home/programs/discord.nix b/modules/home/programs/discord.nix new file mode 100644 index 00000000..f6972401 --- /dev/null +++ b/modules/home/programs/discord.nix @@ -0,0 +1,102 @@ +{ + lib, + pkgs, + config, + ... +}: +let + inherit (lib) + mkIf + mkMerge + mkEnableOption + mkPackageOption + mkOption + ; + inherit (pkgs.stdenv.hostPlatform) isLinux isDarwin; + + cfg = config.programs.discord; + + settingsFormat = pkgs.formats.json { }; +in +{ + options.programs.discord = { + enable = mkEnableOption "discord support"; + package = mkPackageOption pkgs "discord" { }; + + settings = mkOption { + inherit (settingsFormat) type; + default = { }; + description = "Settings for Discord"; + }; + + moonlight = { + enable = mkEnableOption "Moonlight support for Discord"; + + settings = mkOption { + inherit (settingsFormat) type; + default = { }; + description = "Settings for Moonlight"; + }; + }; + + vencord = { + enable = mkEnableOption "Vencord support for Discord"; + + settings = mkOption { + inherit (settingsFormat) type; + default = { }; + description = "Path to Vencord settings file"; + }; + }; + }; + + config = mkIf cfg.enable (mkMerge [ + (mkIf isLinux { + garden.packages = { + discord = cfg.package.override { + withMoonlight = cfg.moonlight.enable; + withVencord = cfg.vencord.enable; + }; + }; + + xdg.configFile = { + "discord/settings.json".source = settingsFormat.generate "discord-settings.json" cfg.settings; + }; + }) + + (mkIf isDarwin { + home.file = { + "Library/Application Support/discord/settings.json".source = + settingsFormat.generate "discord-settings.json" cfg.settings; + }; + }) + + (mkIf (isLinux && cfg.moonlight.enable) { + xdg.configFile = { + "moonlight-mod/stable.json".source = + settingsFormat.generate "moonlight-settings.json" cfg.moonlight.settings; + }; + }) + + (mkIf (isDarwin && cfg.moonlight.enable) { + home.file = { + "Library/Application Support/moonlight-mod/stable.json".source = + settingsFormat.generate "moonlight-settings.json" cfg.moonlight.settings; + }; + }) + + (mkIf (isLinux && cfg.vencord.enable) { + xdg.configFile = { + "Vencord/settings/settings.json".source = + settingsFormat.generate "vencord-settings.json" cfg.vencord.settings; + }; + }) + + (mkIf (isDarwin && cfg.vencord.enable) { + home.file = { + "Library/Application Support/Vencord/settings/settings.json".source = + settingsFormat "vencord-settings.json" cfg.vencord.settings; + }; + }) + ]); +} diff --git a/modules/home/programs/editors.nix b/modules/home/programs/editors.nix deleted file mode 100644 index ac9129c4..00000000 --- a/modules/home/programs/editors.nix +++ /dev/null @@ -1,50 +0,0 @@ -{ - lib, - self, - pkgs, - config, - ... -}: -let - inherit (self.lib) mkProgram; - inherit (lib) optionalString concatMapAttrsStringSep getExe; - - nv = config.garden.programs.neovim; -in -{ - options.garden.programs = { - vscode = mkProgram pkgs "vscode" { }; - zed = mkProgram pkgs "zed-editor" { }; - micro = mkProgram pkgs "micro" { }; - - neovim = mkProgram pkgs "neovim" { - enable.default = true; - - gui = mkProgram pkgs "neovide" { - enable.default = config.garden.profiles.graphical.enable; - - package.default = pkgs.symlinkJoin { - name = "neovide-wrapped"; - - paths = [ pkgs.neovide ]; - nativeBuildInputs = [ pkgs.makeWrapper ]; - - postBuild = '' - wrapProgram $out/bin/neovide \ - --add-flags '--neovim-bin' \ - --add-flags '${getExe nv.package}' \ - ${optionalString (nv.gui.settings != { }) ( - concatMapAttrsStringSep " " (name: value: "--add-flags '${name}=${value}'") nv.gui.settings - )} - ''; - }; - - settings = lib.mkOption { - type = lib.types.attrsOf lib.types.str; - default = { }; - description = "Settings to pass to neovide"; - }; - }; - }; - }; -} diff --git a/modules/home/programs/git.nix b/modules/home/programs/git.nix deleted file mode 100644 index f5bff1b1..00000000 --- a/modules/home/programs/git.nix +++ /dev/null @@ -1,30 +0,0 @@ -{ - lib, - self, - pkgs, - config, - ... -}: -let - inherit (lib) mkOption; - inherit (self.lib) mkProgram; -in -{ - options.garden.programs = { - git = mkProgram pkgs "git" { - enable.default = config.garden.profiles.workstation.enable; - - package.default = pkgs.gitMinimal; - - signingKey = mkOption { - type = lib.types.str; - default = ""; - description = "The default gpg key used for signing commits"; - }; - }; - - cocogitto = mkProgram pkgs "cocogitto" { - enable.default = config.garden.programs.git.enable; - }; - }; -} diff --git a/modules/home/programs/launchers.nix b/modules/home/programs/launchers.nix deleted file mode 100644 index 31c24421..00000000 --- a/modules/home/programs/launchers.nix +++ /dev/null @@ -1,17 +0,0 @@ -{ - self, - pkgs, - ... -}: -let - inherit (self.lib) mkProgram; -in -{ - options.garden.programs = { - rofi = mkProgram pkgs "rofi" { - package.default = pkgs.rofi-wayland.override { plugins = [ pkgs.rofi-rbw ]; }; - }; - - wofi = mkProgram pkgs "wofi" { }; - }; -} diff --git a/modules/home/programs/misc.nix b/modules/home/programs/misc.nix deleted file mode 100644 index e69fa613..00000000 --- a/modules/home/programs/misc.nix +++ /dev/null @@ -1,41 +0,0 @@ -{ - lib, - self, - pkgs, - config, - ... -}: -let - inherit (lib) mkEnableOption; - inherit (self.lib) mkProgram; - - cfg = config.garden.programs.discord; -in -{ - options.garden.programs = { - discord = mkProgram pkgs "discord" { - withVencord = mkEnableOption "Enable Vencord"; - withMoonlight = mkEnableOption "Enable Moonlight"; - withOpenASAR = mkEnableOption "Enable OpenASAR"; - }; - }; - - config = { - garden.programs.discord = { - package = pkgs.discord.override { - inherit (cfg) withVencord withMoonlight withOpenASAR; - }; - }; - - assertions = [ - { - assertion = cfg.withOpenASAR -> cfg.withMoonlight; - message = "Moonlight and OpenASAR are mutually exclusive. Please enable only one of them."; - } - { - assertion = cfg.withVencord -> cfg.withMoonlight; - message = "Moonlight and Vencord are mutually exclusive. Please enable only one of them."; - } - ]; - }; -} diff --git a/modules/home/programs/notes.nix b/modules/home/programs/notes.nix deleted file mode 100644 index e2278669..00000000 --- a/modules/home/programs/notes.nix +++ /dev/null @@ -1,67 +0,0 @@ -{ - lib, - self, - pkgs, - config, - ... -}: -let - inherit (lib) - mkIf - mkMerge - mkOption - mkEnableOption - makeBinPath - ; - inherit (lib.types) listOf package; - inherit (self.lib) mkProgram; - - cfg = config.garden.programs; -in -{ - options.garden.programs = { - notes.enable = mkEnableOption "enable notes programs"; - - obsidian = mkProgram pkgs "obsidian" { - enable.default = cfg.notes.enable && config.garden.profiles.graphical.enable; - - package.default = pkgs.symlinkJoin { - name = "obsidian-wrapped"; - - paths = [ pkgs.obsidian ]; - nativeBuildInputs = [ pkgs.makeWrapper ]; - - postBuild = '' - wrapProgram $out/bin/obsidian \ - --prefix PATH : ${makeBinPath cfg.obsidian.runtimeInputs} - ''; - }; - - runtimeInputs = mkOption { - type = listOf package; - default = [ ]; - description = '' - Additional runtime inputs for the obsidian package. - ''; - }; - }; - - zk = mkProgram pkgs "zk" { - enable.default = cfg.notes.enable; - }; - }; - - config = mkMerge [ - { - programs.zk = { - inherit (cfg.zk) enable package; - }; - } - - (mkIf cfg.obsidian.enable { - garden.packages = { - obsidian = cfg.obsidian.package; - }; - }) - ]; -} diff --git a/modules/home/packages/pentesting.nix b/modules/home/programs/pentesting.nix similarity index 94% rename from modules/home/packages/pentesting.nix rename to modules/home/programs/pentesting.nix index cbbca746..e2729562 100644 --- a/modules/home/packages/pentesting.nix +++ b/modules/home/programs/pentesting.nix @@ -11,10 +11,10 @@ let inherit (lib) mkIf mkEnableOption; - cfg = config.garden.programs.pentesting; + cfg = config.garden.profiles.pentesting; in { - options.garden.programs.pentesting.enable = + options.garden.profiles.pentesting.enable = mkEnableOption "Enable packages designed for pentesting"; config = mkIf cfg.enable { diff --git a/modules/home/programs/shells.nix b/modules/home/programs/shells.nix deleted file mode 100644 index d96bd43d..00000000 --- a/modules/home/programs/shells.nix +++ /dev/null @@ -1,25 +0,0 @@ -{ - pkgs, - self, - osClass, - ... -}: -let - inherit (self.lib) mkProgram; -in -{ - options.garden.programs = { - bash = mkProgram pkgs "bash" { - enable.default = true; - package.default = pkgs.bashInteractive; - }; - - zsh = mkProgram pkgs "zsh" { - enable.default = osClass == "darwin"; - }; - - fish = mkProgram pkgs "fish" { }; - - nushell = mkProgram pkgs "nushell" { }; - }; -} diff --git a/modules/home/programs/terminals.nix b/modules/home/programs/terminals.nix deleted file mode 100644 index 8fb2fc18..00000000 --- a/modules/home/programs/terminals.nix +++ /dev/null @@ -1,21 +0,0 @@ -{ - self, - pkgs, - config, - inputs', - ... -}: -let - inherit (self.lib) mkProgram; -in -{ - options.garden.programs = { - ghostty = mkProgram pkgs "ghostty" { - enable.default = config.garden.profiles.graphical.enable; - }; - - wezterm = mkProgram pkgs "wezterm" { - package.default = inputs'.tgirlpkgs.packages.wezterm; - }; - }; -} diff --git a/modules/home/programs/wm.nix b/modules/home/programs/wm.nix deleted file mode 100644 index ff0f4d0e..00000000 --- a/modules/home/programs/wm.nix +++ /dev/null @@ -1,19 +0,0 @@ -{ - lib, - self, - pkgs, - config, - ... -}: -let - inherit (self.lib) mkProgram; -in -{ - options.garden.programs = { - hyprland = mkProgram pkgs "hyprland" { - enable.default = config.garden.profiles.graphical.enable; - }; - - fht-compositor.enable = lib.mkEnableOption "fht-compositor"; - }; -} diff --git a/systems/amaterasu/users.nix b/systems/amaterasu/users.nix index 6153e77f..35fe6ea9 100644 --- a/systems/amaterasu/users.nix +++ b/systems/amaterasu/users.nix @@ -1,16 +1,15 @@ { - home-manager.users.isabel.garden = { + home-manager.users.isabel = { programs = { - git.signingKey = "3E7C7A1B5DEDBB03"; + git.signing.key = "3E7C7A1B5DEDBB03"; discord.enable = true; ghostty.enable = true; wezterm.enable = true; chromium.enable = true; - quickshell.enable = true; fish.enable = true; - fht-compositor.enable = true; + quickshell.enable = true; }; }; } diff --git a/systems/athena/users.nix b/systems/athena/users.nix index 833f6b6a..ac27023a 100644 --- a/systems/athena/users.nix +++ b/systems/athena/users.nix @@ -1,13 +1,7 @@ { - home-manager.users.isabel.garden = { + home-manager.users.isabel = { programs = { - git.signingKey = "7AFB9A49656E69F7"; - - discord.enable = true; - wezterm.enable = false; - ghostty.enable = true; - chromium.enable = true; - fish.enable = true; + git.signing.key = "7AFB9A49656E69F7"; }; }; } diff --git a/systems/bmo/users.nix b/systems/bmo/users.nix index 01d42bce..2ac48587 100644 --- a/systems/bmo/users.nix +++ b/systems/bmo/users.nix @@ -1,28 +1,25 @@ -{ inputs', ... }: { garden.system = { users = [ "robin" ]; }; - home-manager.users.robin.garden = { + home-manager.users.robin = { programs = { - notes.enable = true; - hyprland.enable = true; zsh.enable = true; defaults.shell = "zsh"; - neovim.package = inputs'.ivy.packages.default; - # programs rofi.enable = true; waybar.enable = true; chromium.enable = true; - defaults.screenLocker = null; - discord.enable = true; }; + + garden = { + defaults.screenLocker = null; + }; }; } diff --git a/systems/cottage/users.nix b/systems/cottage/users.nix index 36d23f0b..547c0307 100644 --- a/systems/cottage/users.nix +++ b/systems/cottage/users.nix @@ -1,19 +1,16 @@ -{ inputs', ... }: { garden.system = { users = [ "robin" ]; }; - home-manager.users.robin.garden = { + home-manager.users.robin = { programs = { hyprland.enable = true; rofi.enable = true; fish.enable = true; - - neovim.package = inputs'.ivy.packages.default; }; - style.fonts.name = "Maple Mono NF"; + garden.style.fonts.name = "Maple Mono NF"; }; } diff --git a/systems/hestia/users.nix b/systems/hestia/users.nix index 18163526..e55a4f7d 100644 --- a/systems/hestia/users.nix +++ b/systems/hestia/users.nix @@ -1,8 +1,8 @@ { - home-manager.users.isabel.garden = { + home-manager.users.isabel = { programs = { git.enable = true; - git.signingKey = "7F2F6BD6997FCDF7"; + git.signing.key = "7F2F6BD6997FCDF7"; }; }; } diff --git a/systems/minerva/users.nix b/systems/minerva/users.nix index 7b0d131c..1ff8e931 100644 --- a/systems/minerva/users.nix +++ b/systems/minerva/users.nix @@ -1,7 +1,7 @@ { - home-manager.users.isabel.garden = { + home-manager.users.isabel = { programs = { - git.signingKey = "7F2F6BD6997FCDF7"; + git.signing.key = "7F2F6BD6997FCDF7"; }; }; } diff --git a/systems/skadi/users.nix b/systems/skadi/users.nix index bc5a7ba3..01a957ac 100644 --- a/systems/skadi/users.nix +++ b/systems/skadi/users.nix @@ -1,8 +1,8 @@ { - home-manager.users.isabel.garden = { + home-manager.users.isabel = { programs = { git.enable = true; - git.signingKey = "3E7C7A1B5DEDBB03"; + git.signing.key = "3E7C7A1B5DEDBB03"; }; }; } diff --git a/systems/tatsumaki/users.nix b/systems/tatsumaki/users.nix index 2342adb5..30baa6f6 100644 --- a/systems/tatsumaki/users.nix +++ b/systems/tatsumaki/users.nix @@ -1,10 +1,8 @@ { - home-manager.users.isabel.garden = { + home-manager.users.isabel = { programs = { - notes.enable = true; - discord.enable = true; - git.signingKey = "3E7C7A1B5DEDBB03"; + git.signing.key = "3E7C7A1B5DEDBB03"; fish.enable = true; }; }; diff --git a/systems/valkyrie/users.nix b/systems/valkyrie/users.nix index f248bcfc..bec4048a 100644 --- a/systems/valkyrie/users.nix +++ b/systems/valkyrie/users.nix @@ -1,9 +1,9 @@ { - home-manager.users.isabel.garden = { - programs = { - defaults.shell = "fish"; + home-manager.users.isabel = { + garden.programs.defaults.shell = "fish"; - git.signingKey = "3E7C7A1B5DEDBB03"; + programs = { + git.signing.key = "3E7C7A1B5DEDBB03"; fish.enable = true; }; }; diff --git a/systems/wisp/users.nix b/systems/wisp/users.nix index 4711a3c3..2d9bd1e0 100644 --- a/systems/wisp/users.nix +++ b/systems/wisp/users.nix @@ -1,18 +1,14 @@ -{ inputs', ... }: { garden.system = { mainUser = "robin"; users = [ "robin" ]; }; - home-manager.users.robin.garden = { - programs = { - notes.enable = true; + home-manager.users.robin = { + garden.programs.defaults.shell = "zsh"; + programs = { zsh.enable = true; - defaults.shell = "zsh"; - - neovim.package = inputs'.ivy.packages.default; }; }; }