Created
October 5, 2020 01:21
-
-
Save antifuchs/4d751d182296e2382fc6d86d26e0c25e to your computer and use it in GitHub Desktop.
updated https://github.com/eraserhd/dotfiles/blob/develop/modules/nix-darwin/homebrew/default.nix with `mas` support
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
{ lib, config, pkgs, ... }: | |
with lib; | |
let | |
cfg = config.homebrew; | |
caskAppdirStatement = | |
if (isNull cfg.cask_args.appdir) | |
then "" | |
else "cask_args appdir: '${cfg.cask_args.appdir}'"; | |
masStatements = values: (concatMapStrings (value: "mas '${value.name}', id: ${toString value.id}\n") values); | |
statements = word: values: (concatMapStrings (value: "${word} '${value}'\n") values); | |
brewfile = pkgs.writeTextFile { | |
name = "Brewfile"; | |
text = '' | |
${caskAppdirStatement} | |
${statements "tap" cfg.taps} | |
${statements "cask" cfg.casks} | |
${statements "brew" cfg.formulae} | |
${masStatements cfg.mas} | |
''; | |
}; | |
in | |
{ | |
options.homebrew = { | |
enable = mkEnableOption "Homebrew"; | |
taps = mkOption { | |
description = "taps to retrieve formulae from"; | |
type = with types; listOf str; | |
example = "homebrew/cask-fonts"; | |
}; | |
cask_args.appdir = mkOption { | |
description = "path for Mac OS application bundles"; | |
type = with types; nullOr path; | |
default = null; | |
example = "/Applications"; | |
}; | |
casks = mkOption { | |
description = "casks to be installed"; | |
type = with types; listOf str; | |
default = [ ]; | |
example = "spotify"; | |
}; | |
mas = mkOption { | |
description = "Mac App Store apps to be installed."; | |
type = with types; listOf (submodule { | |
options = { | |
name = lib.mkOption { type = str; }; | |
id = lib.mkOption { type = ints.unsigned; }; | |
}; | |
}); | |
default = [ ]; | |
}; | |
formulae = mkOption { | |
description = "formulae to be installed"; | |
type = with types; listOf str; | |
default = [ ]; | |
example = "openscad"; | |
}; | |
}; | |
config = mkIf cfg.enable { | |
homebrew.taps = [ "homebrew/bundle" ]; | |
system.activationScripts.extraUserActivation.text = '' | |
PATH="/usr/local/bin:$PATH" HOMEBREW_NO_AUTO_UPDATE=1 brew bundle --no-lock --file="${brewfile}" | |
''; | |
}; | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment