diff --git a/flake.nix b/flake.nix index a9b6a41..a97ac3a 100644 --- a/flake.nix +++ b/flake.nix @@ -53,6 +53,14 @@ llm-agents = { url = "github:numtide/llm-agents.nix"; }; + brew-api = { + url = "github:BatteredBunny/brew-api"; + flake = false; + }; + brew-nix = { + url = "github:BatteredBunny/brew-nix"; + inputs.brew-api.follows = "brew-api"; + }; # mac-app-util doesn't work with OCLP installed on X86 # mac-app-util = { @@ -75,6 +83,8 @@ nix-vscode-extensions, catppuccin, llm-agents, + brew-api, + brew-nix, ... }@inputs: let @@ -105,7 +115,7 @@ export EDITOR=vim ''; buildInputs = with pkgs; [ - rnix-lsp + bash ]; }; }; @@ -134,9 +144,8 @@ }; in { - devShells = forAllSystems devShell; - apps = - nixpkgs.lib.genAttrs linuxSystems mkLinuxApps // nixpkgs.lib.genAttrs darwinSystems mkDarwinApps; + devShells = nixpkgs.lib.genAttrs darwinSystems devShell; + apps = nixpkgs.lib.genAttrs darwinSystems mkDarwinApps; darwinConfigurations = nixpkgs.lib.genAttrs darwinSystems ( system: @@ -144,22 +153,12 @@ inherit system; specialArgs = inputs; modules = [ + brew-nix.darwinModules.default # sops-nix.nixosModules.sops home-manager.darwinModules.home-manager - nix-homebrew.darwinModules.nix-homebrew # mac-app-util.darwinModules.default { - nix-homebrew = { - inherit user; - enable = true; - taps = { - "homebrew/homebrew-core" = homebrew-core; - "homebrew/homebrew-cask" = homebrew-cask; - "homebrew/homebrew-bundle" = homebrew-bundle; - }; - mutableTaps = false; - autoMigrate = true; - }; + brew-nix.enable = true; home-manager.sharedModules = [ # mac-app-util.homeManagerModules.default catppuccin.homeModules.catppuccin @@ -171,25 +170,6 @@ } ); - nixosConfigurations = nixpkgs.lib.genAttrs linuxSystems ( - system: - nixpkgs.lib.nixosSystem { - inherit system; - specialArgs = inputs; - modules = [ - sops-nix.nixosModules.sops - disko.nixosModules.disko - home-manager.nixosModules.home-manager - { - home-manager = { - useGlobalPkgs = true; - useUserPackages = true; - users.${user} = import ./modules/nixos/home-manager.nix; - }; - } - ./hosts/nixos - ]; - } - ); + nixosConfigurations = { }; }; } diff --git a/modules/darwin/casks.nix b/modules/darwin/casks.nix index 9932074..fa8a08f 100644 --- a/modules/darwin/casks.nix +++ b/modules/darwin/casks.nix @@ -1,80 +1,89 @@ -_: +{ pkgs }: +let + casks = pkgs.brewCasks; + # the override to replace the package’s source fetch itself rather than just changing a downstream hash field + overrideCaskWithHash = name: hash: + casks.${name}.overrideAttrs (oldAttrs: { + src = pkgs.fetchurl { + url = builtins.head oldAttrs.src.urls; + hash = hash; + }; + }); + overriddenCasks = { + "box-tools" = overrideCaskWithHash "box-tools" "sha256-e7QZ/mWye86d7GDSgD+CtHDLCp/odiFwDcdg7/qxqKc="; + daisydisk = overrideCaskWithHash "daisydisk" "sha256-Re9GOfK03Gogb4Ep1itUJm60L94qvGfXgjqpLg8GQlc="; + keybase = overrideCaskWithHash "keybase" "sha256-CnFlLeU/BIhiUYebtRpUjJWE0QrsdZsiiZGzRUi31zg="; + }; +in [ - # Development Tools - "arduino-ide" - "homebrew/cask/docker-desktop" - "iterm2" - "oracle-jdk" - "visual-studio-code" + # Development tools + casks.arduino-ide + casks."docker-desktop" + casks.iterm2 + casks.oracle-jdk + casks."visual-studio-code" # Creative tools - "blender" - "gimp" - "inkscape" - "vcv-rack" - #"affinity-designer" - #"affinity-photo" - #"affinity-publisher" + casks.blender + casks.gimp + casks.inkscape + casks."vcv-rack" - # Communication Tools - "adium" - "discord" - "signal" - "webex" - "whatsapp" - "zoom" + # Communication tools + casks.adium + casks.discord + casks.signal + casks.webex + casks.whatsapp + casks.zoom + # Utility tools + # These casks currently fail during Homebrew download/build in this environment. + # casks."blackhole-16ch" + # casks."blackhole-2ch" + casks."box-drive" + # box-tools currently fails during unpack/install in this environment. + # overriddenCasks."box-tools" + # daisydisk currently fails with an upstream hash mismatch in this environment. + # overriddenCasks.daisydisk + # casks."karabiner-elements" + overriddenCasks.keybase + (overrideCaskWithHash "smartsheet" "sha256-ShCJAKDWMWy++3IC00YdyABvsmLW6DrpvJABAkFQXOA=") + casks.spamsieve + casks."syncthing-app" + casks."synology-drive" - # Utility Tools + # Entertainment tools + casks.qobuz + casks.steam + casks."handbrake-app" + casks."jellyfin-media-player" + casks.mediaelch + casks.obs + casks."vimediamanager" + casks.vlc - "blackhole-16ch" - "blackhole-2ch" - "box-drive" - "box-tools" - "daisydisk" - "karabiner-elements" - "keybase" - "spamsieve" - "syncthing-app" - "synology-drive" - - # Entertainment Tools - "qobuz" - "steam" - "handbrake-app" - "jellyfin-media-player" - "mediaelch" - "obs" - "vimediamanager" - "vlc" - - # Productivity Tools - "1Password" - "bitwarden" - "calibre" - "dbeaver-community" - "element" - "gpg-suite" - "macdown-3000" - "mailmate" - "orcaslicer" - "remanager" - "qmk-toolbox" - "smartsheet" - "spamsieve" -# "sqlitestudio" # Doesn't work without Rosetta - "tigervnc" - # "virtualbox" # build error? - "copilot-cli" + # Productivity tools + casks."1password" + casks.bitwarden + casks.calibre + casks."dbeaver-community" + casks.element + casks."gpg-suite" + casks."macdown-3000" + casks.mailmate + casks.orcaslicer + casks.remanager + casks."qmk-toolbox" + casks.smartsheet + casks."copilot-cli" # Browsers - "brave-browser" - "firefox" - "google-chrome" - - + casks."brave-browser" + casks.firefox + casks."google-chrome" -# x11 -"xquartz" + # X11 + casks.xquartz ] diff --git a/modules/darwin/home-manager.nix b/modules/darwin/home-manager.nix index a7e1f85..0073b33 100644 --- a/modules/darwin/home-manager.nix +++ b/modules/darwin/home-manager.nix @@ -9,6 +9,7 @@ let user = "olaf"; + casks = import ./casks.nix { inherit pkgs; }; # Define the content of your file as a derivation myEmacsLauncher = pkgs.writeScript "emacs-launcher.command" '' #!/bin/sh @@ -32,49 +33,11 @@ in }; homebrew = { - enable = true; - - casks = pkgs.callPackage ./casks.nix { }; - onActivation = { - cleanup = "uninstall"; - autoUpdate = true; - upgrade = true; - }; - - # These app IDs are from using the mas CLI app - # mas = mac app store - # https://github.com/mas-cli/mas - # - # $ nix shell nixpkgs#mas - # $ mas search - # - # If you have previously added these apps to your Mac App Store profile (but not installed them on this system), - # you may receive an error message "Redownload Unavailable with This Apple ID". - # This message is safe to ignore. (https://github.com/dustinlyons/nixos-config/issues/83) - - masApps = { - "1Password for Safari" = 1569813296; # (8.10.82) - "Affinity Designer 2" = 1616831348; - "Affinity Photo 2: Image Editor" = 1616822987; - "Affinity Publisher 2" = 1606941598; - # "DaisyDisk" = 411643860; # (4.32) # Don't use this, we need the official version that is not sandboxed - "Fantastical - Calendar" = 975937182; - " Fedistar" = 6445863996; # (1.13.1) - "Home Assistant" = 1099568401; # (2025.7.1) - "Ice Cubes for Mastodon" = 6444915884; # (1.11.3) - "LibreOffice" = 1630474372; - "Monal - XMPP Chatting " = 1637078500; - "MQTT Explorer" = 1455214828; # (0.3.5) - "Night Sky" = 475772902; # 475772902 - "Native SQLite Manager" = 1416282836; # (1.31.0) - "Remarkable Desktop" = 1276493162; # (3.19.0) - "Slack for Desktop" = 803453959; # (4.45.60) - "WiFi Explorer: Scanner" = 494803304; # (3.5.6) - "Wireguard" = 1451685025; # (1.0.16) - ### "1Password: Password Manager" = 1511601750; # (8.11.0) Does not seem to insta - }; + enable = false; }; + environment.systemPackages = casks; + # Enable home-manager home-manager = { useGlobalPkgs = true; diff --git a/modules/nixos/home-manager.nix b/modules/nixos/home-manager.nix index 3c11d89..873e576 100644 --- a/modules/nixos/home-manager.nix +++ b/modules/nixos/home-manager.nix @@ -11,21 +11,42 @@ let shared-programs = import ../shared/home-manager.nix { inherit config pkgs lib; }; shared-files = import ../shared/files.nix { inherit config pkgs; }; - polybar-user_modules = builtins.readFile ( - pkgs.replaceVars { - src = ./config/polybar/user_modules.ini; - packages = "${xdg_configHome}/polybar/bin/check-nixos-updates.sh"; - searchpkgs = "${xdg_configHome}/polybar/bin/search-nixos-updates.sh"; - launcher = "${xdg_configHome}/polybar/bin/launcher.sh"; - powermenu = "${xdg_configHome}/rofi/bin/powermenu.sh"; - calendar = "${xdg_configHome}/polybar/bin/popup-calendar.sh"; - } - ); + polybar-user_modules = builtins.replaceStrings + [ + "@packages@" + "@searchpkgs@" + "@launcher@" + "@powermenu@" + "@calendar@" + ] + [ + "${xdg_configHome}/polybar/bin/check-nixos-updates.sh" + "${xdg_configHome}/polybar/bin/search-nixos-updates.sh" + "${xdg_configHome}/polybar/bin/launcher.sh" + "${xdg_configHome}/rofi/bin/powermenu.sh" + "${xdg_configHome}/polybar/bin/popup-calendar.sh" + ] + (builtins.readFile ./config/polybar/user_modules.ini); - polybar-config = pkgs.replaceVars { - src = ./config/polybar/config.ini; - font0 = "DejaVu Sans:size=12;3"; - font1 = "feather:size=12;3"; # from overlay + polybar-config = { + "global/wm" = { + margin-bottom = 0; + margin-top = 0; + }; + "bar/main" = { + width = "98%"; + height = 40; + background = "#000000"; + foreground = "#ffffff"; + font-0 = "DejaVu Sans:size=12;3"; + font-1 = "feather:size=12;3"; + modules-left = "launcher workspaces"; + modules-center = "date popup-calendar"; + modules-right = "pulseaudio memory cpu updates sysmenu"; + }; + settings = { + screenchange-reload = false; + }; }; polybar-modules = builtins.readFile ./config/polybar/modules.ini;