diff --git a/darwin/bootstrap.nix b/darwin/bootstrap.nix index b323ce1..627a143 100644 --- a/darwin/bootstrap.nix +++ b/darwin/bootstrap.nix @@ -1,5 +1,4 @@ -{ config, pkgs, lib, ... }: -{ +{ config, pkgs, lib, ... }: { # Nix configuration ------------------------------------------------------------------------------ nix.settings = { @@ -20,14 +19,15 @@ "pre-commit-hooks.cachix.org-1:Pkk3Panw5AW24TOv6kz3PvLhlH8puAsJTBbOPmBo7Rc=" "iohk.cachix.org-1:DpRUyj7h7V830dp/i6Nti+NEO2/nhblbov/8MW7Rqoo=" ]; - trusted-users = [ - "@admin" - ]; + trusted-users = [ "@admin" ]; # TODO: remove and replace with a launchd job # see https://github.com/NixOS/nix/issues/7273 auto-optimise-store = true; experimental-features = [ "nix-command" "flakes" ]; - extra-platforms = lib.mkIf (pkgs.system == "aarch64-darwin") [ "x86_64-darwin" "aarch64-darwin" ]; + extra-platforms = lib.mkIf (pkgs.system == "aarch64-darwin") [ + "x86_64-darwin" + "aarch64-darwin" + ]; }; nix.configureBuildUsers = true; @@ -35,12 +35,8 @@ services.nix-daemon.enable = true; # Make Fish the default shell - environment.shells = lib.mkForce (builtins.attrValues { - inherit (pkgs) - bashInteractive - fish - zsh; - }); + environment.shells = lib.mkForce + (builtins.attrValues { inherit (pkgs) bashInteractive fish zsh; }); programs.fish.enable = true; programs.fish.useBabelfish = true; diff --git a/darwin/homebrew.nix b/darwin/homebrew.nix index 619d54d..f3a2c28 100644 --- a/darwin/homebrew.nix +++ b/darwin/homebrew.nix @@ -2,8 +2,7 @@ let inherit (config.users) primaryUser; caskPresent = cask: lib.any (x: x.name == cask) config.homebrew.casks; -in -{ +in { environment.shellInit = '' eval "$(${config.homebrew.brewPrefix}/brew shellenv)" ''; @@ -87,19 +86,16 @@ in # "zoom" ]; - home-manager.users.${primaryUser.username} = - let - socket = "${primaryUser.homeDirectory}/Library/Containers/com.maxgoedjen.Secretive.SecretAgent/Data/socket.ssh"; - in - lib.mkIf (caskPresent "secretive" && config ? home-manager) { - home.sessionVariables.SSH_AUTH_SOCK = socket; - programs.ssh = { - enable = true; - matchBlocks."*".extraOptions = { - IdentityAgent = socket; - }; - }; + home-manager.users.${primaryUser.username} = let + socket = + "${primaryUser.homeDirectory}/Library/Containers/com.maxgoedjen.Secretive.SecretAgent/Data/socket.ssh"; + in lib.mkIf (caskPresent "secretive" && config ? home-manager) { + home.sessionVariables.SSH_AUTH_SOCK = socket; + programs.ssh = { + enable = true; + matchBlocks."*".extraOptions = { IdentityAgent = socket; }; }; + }; # For cli packages that aren't currently available for macOS in `nixpkgs`.Packages should be # installed in `../home/programs.nix` whenever possible. diff --git a/default.nix b/default.nix index cfdc9ff..1ec8604 100644 --- a/default.nix +++ b/default.nix @@ -1,14 +1,7 @@ # See https://nixos.wiki/wiki/Flakes#Using_flakes_project_from_a_legacy_Nix -(import - ( - let - lock = builtins.fromJSON (builtins.readFile ./flake.lock); - in - fetchTarball { - url = "https://github.com/edolstra/flake-compat/archive/${lock.nodes.flake-compat.locked.rev}.tar.gz"; - sha256 = lock.nodes.flake-compat.locked.narHash; - } - ) - { - src = ./.; - }).defaultNix +(import (let lock = builtins.fromJSON (builtins.readFile ./flake.lock); +in fetchTarball { + url = + "https://github.com/edolstra/flake-compat/archive/${lock.nodes.flake-compat.locked.rev}.tar.gz"; + sha256 = lock.nodes.flake-compat.locked.narHash; +}) { src = ./.; }).defaultNix diff --git a/flake.nix b/flake.nix index b605910..b062e95 100644 --- a/flake.nix +++ b/flake.nix @@ -42,12 +42,7 @@ starship-src.flake = false; }; - outputs = - { self - , flake-utils - , pre-commit - , ... - }@inputs: + outputs = { self, flake-utils, pre-commit, ... }@inputs: let # this is a "functor" that takes an option name # this allows for creating identical modules @@ -55,10 +50,7 @@ mkPrimaryUserModule = import ./modules/mk-primary-user-module.nix; inherit (inputs.darwin.lib) darwinSystem; - inherit (inputs.nixpkgs.lib) - attrValues - makeOverridable - optionalAttrs; + inherit (inputs.nixpkgs.lib) attrValues makeOverridable optionalAttrs; # Configuration for `nixpkgs` nixpkgsConfig = { @@ -81,94 +73,84 @@ }; # helper for defining nix-darwin systems - mkDarwinSystem = - { modules ? [ ] - , homeModules ? [ ] - , ... - }@args: import ./lib/mkDarwinSystem.nix self inputs nixpkgsConfig (args // { + mkDarwinSystem = { modules ? [ ], homeModules ? [ ], ... }@args: + import ./lib/mkDarwinSystem.nix self inputs nixpkgsConfig (args // { inherit homeStateVersion; modules = attrValues self.darwinModules ++ modules; homeModules = attrValues self.homeManagerModules ++ homeModules; }); - in - { + in { # `nix-darwin` configs - darwinConfigurations = - let - bootstrap-x86 = makeOverridable darwinSystem { - system = "x86_64-darwin"; - modules = [ ./darwin/bootstrap.nix { nixpkgs = nixpkgsConfig; } ]; - }; - in - { - # Mininal configurations to bootstrap systems - inherit bootstrap-x86; - bootstrap-arm = bootstrap-x86.override { system = "aarch64-darwin"; }; - - # M1 MBP - matbook = mkDarwinSystem { - primaryUser = primaryUserInfo; - modules = [{ - networking.computerName = "matbook pro m1"; - networking.hostName = "matbook"; - networking.knownNetworkServices = [ - "Wi-Fi" - ]; - nix.settings.cores = 2; - nix.settings.max-jobs = 4; - - homebrew.casks = [ - # games - "gog-galaxy" - "origin" - "sony-ps-remote-play" - "steam" - ]; - home-manager.sharedModules = [{ - # programs.fish.shellAliases = { - # code = "${pkgs.vscodium}/bin/codium"; - # }; - programs.ssh.matchBlocks.remarkable = { - hostname = "10.11.99.1"; - user = "root"; - port = 22; - }; - # programs.vscode.package = pkgs.vscodium; - programs.vscode.enable = true; - }]; - }]; - }; - - yelpbook-m1 = mkDarwinSystem { - primaryUser = workUserInfo; - modules = [ - ({ pkgs, lib, ... }: { - users.primaryUser = workUserInfo; - networking.knownNetworkServices = [ - "Wi-Fi" - ]; - nix.settings.cores = 2; - nix.settings.max-jobs = 5; - - homebrew.casks = [ "itsycal" ]; - home-manager.sharedModules = [{ - # TODO: how to remove this entirely? - home.file.".tarsnaprc" = lib.mkForce { text = ""; }; - home.packages = [ pkgs.yubiswitch ]; - programs.ssh.matchBlocks.devbox = { - hostname = "csdev6"; - forwardAgent = true; - serverAliveInterval = 120; - }; - programs.fish.functions.devbox.body = '' - ssh -t devbox "agenttmux attach; or agenttmux new -s yelp" - ''; - launchd.agents.tarsnap.enable = lib.mkForce false; - }]; - }) - ]; - }; + darwinConfigurations = let + bootstrap-x86 = makeOverridable darwinSystem { + system = "x86_64-darwin"; + modules = [ ./darwin/bootstrap.nix { nixpkgs = nixpkgsConfig; } ]; }; + in { + # Mininal configurations to bootstrap systems + inherit bootstrap-x86; + bootstrap-arm = bootstrap-x86.override { system = "aarch64-darwin"; }; + + # M1 MBP + matbook = mkDarwinSystem { + primaryUser = primaryUserInfo; + modules = [{ + networking.computerName = "matbook pro m1"; + networking.hostName = "matbook"; + networking.knownNetworkServices = [ "Wi-Fi" ]; + nix.settings.cores = 2; + nix.settings.max-jobs = 4; + + homebrew.casks = [ + # games + "gog-galaxy" + "origin" + "sony-ps-remote-play" + "steam" + ]; + home-manager.sharedModules = [{ + # programs.fish.shellAliases = { + # code = "${pkgs.vscodium}/bin/codium"; + # }; + programs.ssh.matchBlocks.remarkable = { + hostname = "10.11.99.1"; + user = "root"; + port = 22; + }; + # programs.vscode.package = pkgs.vscodium; + programs.vscode.enable = true; + }]; + }]; + }; + + yelpbook-m1 = mkDarwinSystem { + primaryUser = workUserInfo; + modules = [ + ({ pkgs, lib, ... }: { + users.primaryUser = workUserInfo; + networking.knownNetworkServices = [ "Wi-Fi" ]; + nix.settings.cores = 2; + nix.settings.max-jobs = 5; + + homebrew.casks = [ "itsycal" ]; + home-manager.sharedModules = [{ + # TODO: how to remove this entirely? + home.file.".tarsnaprc" = lib.mkForce { text = ""; }; + home.packages = [ pkgs.yubiswitch ]; + programs.ssh.matchBlocks.devbox = { + hostname = "csdev6"; + forwardAgent = true; + serverAliveInterval = 120; + }; + programs.fish.functions.devbox.body = '' + ssh -t devbox "agenttmux attach; or agenttmux new -s yelp" + ''; + launchd.agents.tarsnap.enable = lib.mkForce false; + }]; + }) + ]; + }; + }; # Overlays --------------------------------------------------------------- {{{ @@ -198,17 +180,21 @@ colors = import ./overlays/colors.nix; # Overlay useful on Macs with Apple Silicon - apple-silicon = _: prev: optionalAttrs (prev.stdenv.system == "aarch64-darwin") { - # Add access to x86 packages system is running Apple Silicon - pkgs-x86 = import inputs.nixpkgs { - system = "x86_64-darwin"; - inherit (nixpkgsConfig) config; + apple-silicon = _: prev: + optionalAttrs (prev.stdenv.system == "aarch64-darwin") { + # Add access to x86 packages system is running Apple Silicon + pkgs-x86 = import inputs.nixpkgs { + system = "x86_64-darwin"; + inherit (nixpkgsConfig) config; + }; }; - }; - homebrew-enabled = _: prev: optionalAttrs prev.stdenv.isDarwin { - lib = prev.lib // { homebrew-enabled = inputs.homebrew-enabled.value; }; - }; + homebrew-enabled = _: prev: + optionalAttrs prev.stdenv.isDarwin { + lib = prev.lib // { + homebrew-enabled = inputs.homebrew-enabled.value; + }; + }; extra-pkgs = import ./pkgs { inherit inputs; }; }; @@ -239,7 +225,8 @@ starship = import ./home/starship.nix; starship-symbols = import ./home/starship-symbols.nix; # modules - programs-kakoune-extras = import ./modules/home/programs/kakoune/extras.nix; # currently unused + programs-kakoune-extras = + import ./modules/home/programs/kakoune/extras.nix; # currently unused programs-helix-extras = import ./modules/home/programs/helix/extras.nix; programs-kitty-extras = import ./modules/home/programs/kitty/extras.nix; home-primary-user = mkPrimaryUserModule "home"; @@ -247,18 +234,21 @@ templates = import ./templates; } // flake-utils.lib.eachDefaultSystem (system: { - legacyPackages = import inputs.nixpkgs (nixpkgsConfig // { inherit system; }); + legacyPackages = + import inputs.nixpkgs (nixpkgsConfig // { inherit system; }); checks.pre-commit = pre-commit.lib.${system}.run { src = ./.; hooks = { deadnix.enable = true; - nixpkgs-fmt.enable = true; + nil.enable = true; + nixfmt.enable = true; statix.enable = true; }; }; - devShells = let pkgs = self.legacyPackages.${system}; in { + devShells = let pkgs = self.legacyPackages.${system}; + in { default = pkgs.mkShell { inherit (self.checks.${system}.pre-commit) shellHook; }; diff --git a/home/files.nix b/home/files.nix index ef7551b..6952a36 100644 --- a/home/files.nix +++ b/home/files.nix @@ -1,9 +1,7 @@ { config, ... }: { # Misc configuration files --------------------------------------------------------------------{{{ - xdg = { - enable = true; - }; + xdg = { enable = true; }; home.file = { ".pijulconfig".text = '' diff --git a/home/fish.nix b/home/fish.nix index aa1a93e..a95d9c0 100644 --- a/home/fish.nix +++ b/home/fish.nix @@ -7,10 +7,7 @@ # Add Fish plugins home.packages = builtins.attrValues { - inherit (pkgs.fishPlugins) - autopair-fish - colored-man-pages - done; + inherit (pkgs.fishPlugins) autopair-fish colored-man-pages done; }; programs.fish.plugins = [ pkgs.fishPlugins.fisher ]; @@ -136,10 +133,8 @@ # Aliases programs.fish.shellAliases = - let - inherit (config.home.primaryUser) nixConfigDirectory; - in - { + let inherit (config.home.primaryUser) nixConfigDirectory; + in { # Nix related from-nix = "from-dir ${nixConfigDirectory}"; # darwin-rebuild build @@ -147,7 +142,8 @@ # darwin-rebuild switch full drsf = "from-nix darwin-rebuild switch --flake ."; # darwin-rebuild switch (no homebrew) - drs = "from-nix darwin-rebuild switch --flake . --override-input homebrew-enabled github:boolean-option/false"; + drs = + "from-nix darwin-rebuild switch --flake . --override-input homebrew-enabled github:boolean-option/false"; # edit darwin-rebuild config in code/codium drc = "code ${nixConfigDirectory}"; # edit darwin-rebuild config in vim @@ -164,7 +160,8 @@ nsh = "nix shell"; nshu = "nix-unfree shell"; nrp = "nix repl --expr '{ pkgs = (import { }); }'"; - nrpu = "nix repl --expr '{ pkgs = (import { config.allowUnfree = true; }); }' --impure"; + nrpu = + "nix repl --expr '{ pkgs = (import { config.allowUnfree = true; }); }' --impure"; # Other ".." = "cd .."; @@ -183,7 +180,8 @@ colortest = "${pkgs.terminal-colors}/bin/terminal-colors -o"; } // lib.optionalAttrs pkgs.stdenv.isDarwin { sb = "set-background-to-macOS"; - conda-init = "eval /opt/homebrew/bin/conda 'shell.fish' 'hook' $argv | source"; + conda-init = + "eval /opt/homebrew/bin/conda 'shell.fish' 'hook' $argv | source"; }; # Configuration that should be above `loginShellInit` and `interactiveShellInit`. diff --git a/home/git.nix b/home/git.nix index 428581e..482d074 100644 --- a/home/git.nix +++ b/home/git.nix @@ -17,10 +17,7 @@ help.autocorrect = "prompt"; }; - programs.git.ignores = [ - ".DS_Store" - ".direnv" - ]; + programs.git.ignores = [ ".DS_Store" ".direnv" ]; # Enhanced diffs programs.git.delta.enable = true; diff --git a/home/helix.nix b/home/helix.nix index b76f480..992de1c 100644 --- a/home/helix.nix +++ b/home/helix.nix @@ -31,7 +31,5 @@ dark = "rose_pine"; }; - home.sessionVariables = { - EDITOR = "hx"; - }; + home.sessionVariables = { EDITOR = "hx"; }; } diff --git a/home/kitty.nix b/home/kitty.nix index 2bb5dce..69a99e7 100644 --- a/home/kitty.nix +++ b/home/kitty.nix @@ -1,41 +1,34 @@ { pkgs, ... }: # Let-In --------------------------------------------------------------------------------------- {{{ let - colorsToKitty = colors: with colors; { - inherit - background - foreground - selection_background - selection_foreground - tab_bar_background - active_tab_background - active_tab_foreground - inactive_tab_background - inactive_tab_foreground; - cursor = white; - cursor_text_color = background; - color0 = black; - color8 = black; - color1 = red; - color9 = red; - color2 = green; - color10 = lime; - color3 = yellow; - color11 = orange; - color4 = blue; - color12 = blue; - color5 = magenta; - color13 = magenta; - color6 = cyan; - color14 = cyan; - color7 = white; - color15 = white; - url_color = brightgreen; - }; + colorsToKitty = colors: + with colors; { + inherit background foreground selection_background selection_foreground + tab_bar_background active_tab_background active_tab_foreground + inactive_tab_background inactive_tab_foreground; + cursor = white; + cursor_text_color = background; + color0 = black; + color8 = black; + color1 = red; + color9 = red; + color2 = green; + color10 = lime; + color3 = yellow; + color11 = orange; + color4 = blue; + color12 = blue; + color5 = magenta; + color13 = magenta; + color6 = cyan; + color14 = cyan; + color7 = white; + color15 = white; + url_color = brightgreen; + }; font = "Rec Mono Duotone"; -in -# }}} -{ + # }}} +in { # Kitty terminal # https://sw.kovidgoyal.net/kitty/conf.html # https://rycee.gitlab.io/home-manager/options.html#opt-programs.kitty.enable diff --git a/home/programs.nix b/home/programs.nix index 97c6e79..fa534e5 100644 --- a/home/programs.nix +++ b/home/programs.nix @@ -5,9 +5,7 @@ # https://rycee.gitlab.io/home-manager/options.html#opt-programs.bat.enable bat = { enable = true; - config = { - style = "auto"; - }; + config = { style = "auto"; }; }; # Direnv, load and unload environment variables depending on the current directory. # https://direnv.net @@ -16,12 +14,8 @@ enable = true; nix-direnv.enable = true; }; - nix-index = { - enable = true; - }; - nushell = { - enable = true; - }; + nix-index = { enable = true; }; + nushell = { enable = true; }; ssh = { enable = true; matchBlocks."*".extraOptions = lib.optionalAttrs pkgs.stdenv.isDarwin { @@ -31,11 +25,9 @@ }; # vscode = { # enable = true; - # extensions = [ pijul-vscode ]; + # extensions = [ pijul-vscode ]; # }; - zoxide = { - enable = true; - }; + zoxide = { enable = true; }; }; # }}} @@ -43,22 +35,17 @@ home.packages = builtins.attrValues ({ inherit (pkgs) - # GUI apps - cinny - discord-ptb - lagrange - obsidian - slack - zoom-us + # GUI apps + cinny discord-ptb lagrange obsidian slack zoom-us # System + curl wget # lightweight session management abduco # archive tool atool # fancy version of `top` with ASCII graphs bottom - curl # fancy version of `du` du-dust # fancy version of `ls` @@ -79,7 +66,6 @@ thefuck # extract RAR archives unrar - wget # extract XZ archives xz @@ -106,23 +92,19 @@ xh # Useful nix related tools + nixfmt nix-prefetch-git nix-tree # adding/managing alternative binary caches hosted by Cachix cachix # run software from nixpkgs without installing it comma - nixpkgs-fmt - nix-prefetch-git - nix-tree # nix language server - nil - ; + nil; } // lib.optionalAttrs pkgs.stdenv.isDarwin { inherit (pkgs) - # useful macOS CLI commands + # useful macOS CLI commands m-cli # see /overlays/colors.nix - is-dark-mode - ; + is-dark-mode; }); # }}} } diff --git a/home/services/dark-mode-notify.nix b/home/services/dark-mode-notify.nix index 4c453c9..dba322d 100644 --- a/home/services/dark-mode-notify.nix +++ b/home/services/dark-mode-notify.nix @@ -2,8 +2,8 @@ # dark-mode-notify configuration # {{{ launchd.agents.dark-mode-notify = - let logPath = "${config.xdg.stateHome}/dark-mode-notify"; in - { + let logPath = "${config.xdg.stateHome}/dark-mode-notify"; + in { enable = true; config = { Label = "ke.bou.dark-mode-notify"; diff --git a/home/services/tarsnap.nix b/home/services/tarsnap.nix index d7bdc0b..a7ca27b 100644 --- a/home/services/tarsnap.nix +++ b/home/services/tarsnap.nix @@ -1,48 +1,43 @@ { config, pkgs, ... }: { # tarsnap periodic backup configuration # {{{ - launchd.agents.tarsnap = - let - logPath = "${config.xdg.stateHome}/tarsnap"; - tarsnapBackup = pkgs.writeShellScriptBin "tarsnap-backup-helper" '' - date=$(date -u +%Y-%m-%dT%H:%M:%SZ) - echo - echo "Running tarsnap backup for $date" - /opt/homebrew/bin/tarsnap -c \ - --configfile ${config.home.homeDirectory}/.tarsnaprc \ - --keyfile ${config.xdg.configHome}/tarsnap/write-only.key \ - -f $(uname -n)-$date \ - ${config.home.homeDirectory}/{dotfiles.nix,Desktop,Development,Documents,Downloads} - ''; - in - { - enable = true; - config = { - Label = "com.tarsnap.tarsnap"; - StandardErrorPath = "${logPath}/error.log"; - StandardOutPath = "${logPath}/out.log"; - StartCalendarInterval = [ - { - # every sunday - Weekday = 0; - # at midnight - Hour = 0; - Minute = 0; - } - { - # every wednesday - Weekday = 3; - # at noon - Hour = 12; - Minute = 0; - } - ]; - Program = "${tarsnapBackup}/bin/tarsnap-backup-helper"; - }; + launchd.agents.tarsnap = let + logPath = "${config.xdg.stateHome}/tarsnap"; + tarsnapBackup = pkgs.writeShellScriptBin "tarsnap-backup-helper" '' + date=$(date -u +%Y-%m-%dT%H:%M:%SZ) + echo + echo "Running tarsnap backup for $date" + /opt/homebrew/bin/tarsnap -c \ + --configfile ${config.home.homeDirectory}/.tarsnaprc \ + --keyfile ${config.xdg.configHome}/tarsnap/write-only.key \ + -f $(uname -n)-$date \ + ${config.home.homeDirectory}/{dotfiles.nix,Desktop,Development,Documents,Downloads} + ''; + in { + enable = true; + config = { + Label = "com.tarsnap.tarsnap"; + StandardErrorPath = "${logPath}/error.log"; + StandardOutPath = "${logPath}/out.log"; + StartCalendarInterval = [ + { + # every sunday + Weekday = 0; + # at midnight + Hour = 0; + Minute = 0; + } + { + # every wednesday + Weekday = 3; + # at noon + Hour = 12; + Minute = 0; + } + ]; + Program = "${tarsnapBackup}/bin/tarsnap-backup-helper"; }; + }; # }}} } - - - diff --git a/home/starship-symbols.nix b/home/starship-symbols.nix index 3d99733..bf38f2d 100644 --- a/home/starship-symbols.nix +++ b/home/starship-symbols.nix @@ -1,6 +1,6 @@ { lib, ... }: -let inherit (lib) mkDefault; in -{ +let inherit (lib) mkDefault; +in { programs.starship.settings = { aws.symbol = mkDefault " "; battery.full_symbol = mkDefault ""; diff --git a/home/starship.nix b/home/starship.nix index c460769..2e5647b 100644 --- a/home/starship.nix +++ b/home/starship.nix @@ -9,12 +9,14 @@ # See docs here: https://starship.rs/config/ # Symbols config configured in Flake. - battery.display = [ - { threshold = 25; } # display battery information if charge is <= 25% - ]; + battery.display = [{ + threshold = 25; + } # display battery information if charge is <= 25% + ]; directory.fish_style_pwd_dir_length = 1; # turn on fish directory truncation directory.truncation_length = 2; # number of directories not to truncate - memory_usage.disabled = true; # because it includes cached memory it's reported as full a lot + memory_usage.disabled = + true; # because it includes cached memory it's reported as full a lot }; # }}} } diff --git a/lib/mkDarwinSystem.nix b/lib/mkDarwinSystem.nix index 6aeba54..a124224 100644 --- a/lib/mkDarwinSystem.nix +++ b/lib/mkDarwinSystem.nix @@ -1,8 +1,7 @@ # taken from https://github.com/malob/nixpkgs/blob/27e04346555277687a60c0168969b3945c2b25ba/lib/mkDarwinSystem.nix self: inputs: nixpkgs: -{ primaryUser -, system ? "aarch64-darwin" +{ primaryUser, system ? "aarch64-darwin" # `nix-darwin` modules to include , modules ? [ ] @@ -12,20 +11,19 @@ self: inputs: nixpkgs: # Value for `home-manager`'s `home.stateVersion` option. , homeStateVersion - # `home-manager` modules to include +# `home-manager` modules to include , homeModules ? [ ] # Additional `home-manager` modules to include, useful when reusing a configuration with # `lib.makeOverridable`. -, extraHomeModules ? [ ] -}: +, extraHomeModules ? [ ] }: inputs.darwin.lib.darwinSystem { inherit system; modules = modules ++ extraModules ++ [ inputs.home-manager.darwinModules.home-manager ({ config, ... }: - let cfg = config.users.primaryUser; in - { + let cfg = config.users.primaryUser; + in { users.primaryUser = primaryUser; inherit nixpkgs; diff --git a/modules/home/programs/helix/extras.nix b/modules/home/programs/helix/extras.nix index 3a5c61f..9641018 100644 --- a/modules/home/programs/helix/extras.nix +++ b/modules/home/programs/helix/extras.nix @@ -5,10 +5,10 @@ let inherit (cfg) extras; tomlFormat = pkgs.formats.toml { }; inherit (lib) mkIf mkEnableOption mkOption types; -in -{ +in { options.programs.helix.extras = { - autoTheme.enable = mkEnableOption "Automatically switch helix theme with night mode"; + autoTheme.enable = + mkEnableOption "Automatically switch helix theme with night mode"; autoTheme.light = mkOption { type = types.str; @@ -23,14 +23,17 @@ in config = mkIf (cfg.enable && extras.autoTheme.enable) { xdg.configFile = { - "helix/light.toml".source = tomlFormat.generate "helix-autotheme" (cfg.settings // { theme = extras.autoTheme.light; }); - "helix/dark.toml".source = tomlFormat.generate "helix-autotheme" (cfg.settings // { theme = extras.autoTheme.dark; }); + "helix/light.toml".source = tomlFormat.generate "helix-autotheme" + (cfg.settings // { theme = extras.autoTheme.light; }); + "helix/dark.toml".source = tomlFormat.generate "helix-autotheme" + (cfg.settings // { theme = extras.autoTheme.dark; }); }; programs.fish.functions = { hx = { wraps = "hx"; - description = "Helix invocation wrapper to automatically select the right theme"; + description = + "Helix invocation wrapper to automatically select the right theme"; body = '' if is-dark-mode command hx --config ${config.xdg.configHome}/helix/dark.toml $argv diff --git a/modules/home/programs/kakoune/extras.nix b/modules/home/programs/kakoune/extras.nix index f7f334d..cfcf145 100644 --- a/modules/home/programs/kakoune/extras.nix +++ b/modules/home/programs/kakoune/extras.nix @@ -9,24 +9,24 @@ let makeKakouneFace = face: name: let mkColor = name: - if hasPrefix "#" name - then "rgb:${substring 1 (-1) name}" - else if hasPrefix "!#" name - then "rgba:${substring 2 (-1) name}" - else name; - value = - if isList name - then concatStringsSep "," (map mkColor name) - else mkColor name; - in - "face global ${face} ${value}"; + if hasPrefix "#" name then + "rgb:${substring 1 (-1) name}" + else if hasPrefix "!#" name then + "rgba:${substring 2 (-1) name}" + else + name; + value = if isList name then + concatStringsSep "," (map mkColor name) + else + mkColor name; + in "face global ${face} ${value}"; makeKakouneColors = faces: concatStringsSep "\n" - ([ "# Generated by home-manager" ] - ++ mapAttrsToList makeKakouneFace faces); + ([ "# Generated by home-manager" ] ++ mapAttrsToList makeKakouneFace faces); - writeKakouneConfig = file: config: pkgs.writeText file (makeKakouneColors config); + writeKakouneConfig = file: config: + pkgs.writeText file (makeKakouneColors config); kakoune-colors = { light = writeKakouneConfig "light.kak" cfg.colors.light; @@ -44,8 +44,7 @@ let kak-dark = pkgs.writeShellScriptBin "kak-dark" '' ${kak-background}/bin/kak-background dark ''; -in -{ +in { options.programs.kakoune.extras = { colors = { enable = mkEnableOption "Custom kakoune color handling"; @@ -63,11 +62,8 @@ in }; config = mkIf config.programs.kakoune.enable { - home.packages = mkIf cfg.colors.enable [ - kak-light - kak-dark - kak-background - ]; + home.packages = + mkIf cfg.colors.enable [ kak-light kak-dark kak-background ]; xdg.configFile."kak/colors/light.kak".source = kakoune-colors.light; xdg.configFile."kak/colors/dark.kak".source = kakoune-colors.dark; diff --git a/modules/home/programs/kitty/extras.nix b/modules/home/programs/kitty/extras.nix index e2f5f4d..2d1e376 100644 --- a/modules/home/programs/kitty/extras.nix +++ b/modules/home/programs/kitty/extras.nix @@ -7,10 +7,12 @@ let cfg = config.programs.kitty.extras; # Create a Kitty config string from a Nix set - setToKittyConfig = with generators; toKeyValue { mkKeyValue = mkKeyValueDefault { } " "; }; + setToKittyConfig = with generators; + toKeyValue { mkKeyValue = mkKeyValueDefault { } " "; }; # Write a Nix set representing a kitty config into the Nix store - writeKittyConfig = fileName: config: pkgs.writeTextDir "${fileName}" (setToKittyConfig config); + writeKittyConfig = fileName: config: + pkgs.writeTextDir "${fileName}" (setToKittyConfig config); # Path in Nix store containing light and dark kitty color configs kitty-colors = pkgs.symlinkJoin { @@ -36,8 +38,7 @@ let term-dark = pkgs.writeShellScriptBin "term-dark" '' ${term-background}/bin/term-background ${cfg.colors.dark-name} ''; -in -{ +in { options.programs.kitty.extras = { colors = { @@ -112,13 +113,13 @@ in appPath = mkOption { type = types.str; default = null; - description = ''Path to kitty.app''; + description = "Path to kitty.app"; }; iconPath = mkOption { type = types.str; default = null; - description = ''Path to kitty icns''; + description = "Path to kitty icns"; }; }; @@ -126,41 +127,38 @@ in config = mkIf config.programs.kitty.enable { - home.packages = mkIf cfg.colors.enable [ - term-light - term-dark - term-background - ]; + home.packages = + mkIf cfg.colors.enable [ term-light term-dark term-background ]; - home.activation = - let - fileicon = "/opt/homebrew/bin/fileicon"; - in - mkIf (pkgs.stdenv.isDarwin && cfg.fixIcon.enable) { - cleanupKittyIcon = lib.hm.dag.entryBetween [ "darwinApps" ] [ "writeBoundary" ] '' + home.activation = let fileicon = "/opt/homebrew/bin/fileicon"; + in mkIf (pkgs.stdenv.isDarwin && cfg.fixIcon.enable) { + cleanupKittyIcon = + lib.hm.dag.entryBetween [ "darwinApps" ] [ "writeBoundary" ] '' if ${fileicon} test ${cfg.fixIcon.appPath}; then $DRY_RUN_CMD sudo ${fileicon} rm ${cfg.fixIcon.appPath} fi ''; - fixKittyIcon = lib.hm.dag.entryAfter [ "darwinApps" ] '' - $DRY_RUN_CMD sudo ${fileicon} set ${cfg.fixIcon.appPath} ${cfg.fixIcon.iconPath} - ''; - }; + fixKittyIcon = lib.hm.dag.entryAfter [ "darwinApps" ] '' + $DRY_RUN_CMD sudo ${fileicon} set ${cfg.fixIcon.appPath} ${cfg.fixIcon.iconPath} + ''; + }; - programs.kitty.settings = optionalAttrs cfg.colors.enable - { - allow_remote_control = "yes"; - listen_on = "unix:/tmp/mykitty"; - } // optionalAttrs (cfg.useSymbolsFromNerdFont != "") { + programs.kitty.settings = optionalAttrs cfg.colors.enable { + allow_remote_control = "yes"; + listen_on = "unix:/tmp/mykitty"; + } // optionalAttrs (cfg.useSymbolsFromNerdFont != "") { # https://github.com/ryanoasis/nerd-fonts/wiki/Glyph-Sets-and-Code-Points - symbol_map = "U+E5FA-U+E62B,U+E700-U+E7C5,U+F000-U+F2E0,U+E200-U+E2A9,U+F500-U+FD46,U+E300-U+E3EB,U+F400-U+F4A8,U+2665,U+26a1,U+F27C,U+E0A3,U+E0B4-U+E0C8,U+E0CA,U+E0CC-U+E0D2,U+E0D4,U+23FB-U+23FE,U+2B58,U+F300-U+F313,U+E000-U+E00D ${cfg.useSymbolsFromNerdFont}"; + symbol_map = + "U+E5FA-U+E62B,U+E700-U+E7C5,U+F000-U+F2E0,U+E200-U+E2A9,U+F500-U+FD46,U+E300-U+E3EB,U+F400-U+F4A8,U+2665,U+26a1,U+F27C,U+E0A3,U+E0B4-U+E0C8,U+E0CA,U+E0CC-U+E0D2,U+E0D4,U+23FB-U+23FE,U+2B58,U+F300-U+F313,U+E000-U+E00D ${cfg.useSymbolsFromNerdFont}"; }; xdg.configFile."kitty/macos-launch-services-cmdline" = - mkIf (pkgs.stdenv.isDarwin && cfg.colors.enable) { text = "--listen-on unix:/tmp/mykitty"; }; + mkIf (pkgs.stdenv.isDarwin && cfg.colors.enable) { + text = "--listen-on unix:/tmp/mykitty"; + }; }; diff --git a/modules/mk-primary-user-module.nix b/modules/mk-primary-user-module.nix index ef60518..4172481 100644 --- a/modules/mk-primary-user-module.nix +++ b/modules/mk-primary-user-module.nix @@ -1,21 +1,20 @@ -optionName: { config, lib, pkgs, ... }: +optionName: +{ config, lib, pkgs, ... }: let inherit (lib) mkOption types; inherit (pkgs.stdenv) isDarwin; cfg = config.${optionName}.primaryUser; -in -{ +in { options.${optionName}.primaryUser = { username = mkOption { type = types.str; }; fullName = mkOption { type = types.str; }; email = mkOption { type = types.str; }; homeDirectory = mkOption { type = types.str; - default = - let prefix = if isDarwin then "/Users" else "/home"; - in "${prefix}/${cfg.username}"; + default = let prefix = if isDarwin then "/Users" else "/home"; + in "${prefix}/${cfg.username}"; }; nixConfigDirectory = mkOption { type = types.str; diff --git a/overlays/colors.nix b/overlays/colors.nix index b821097..3387fbe 100644 --- a/overlays/colors.nix +++ b/overlays/colors.nix @@ -1,8 +1,6 @@ _final: prev: { lib = prev.lib // { - colors = { - tokyonight = import ./colors/tokyonight.nix; - }; + colors = { tokyonight = import ./colors/tokyonight.nix; }; }; is-dark-mode = prev.writeShellScriptBin "is-dark-mode" '' defaults read -g AppleInterfaceStyle &>/dev/null diff --git a/pkgs/cinny.nix b/pkgs/cinny.nix index f249999..c33eb6c 100644 --- a/pkgs/cinny.nix +++ b/pkgs/cinny.nix @@ -5,7 +5,8 @@ stdenv.mkDerivation { pname = "cinny"; nativeBuildInputs = [ undmg unzip ]; src = fetchurl { - url = "https://github.com/cinnyapp/cinny-desktop/releases/download/v${version}/Cinny_desktop-x86_64.dmg"; + url = + "https://github.com/cinnyapp/cinny-desktop/releases/download/v${version}/Cinny_desktop-x86_64.dmg"; sha256 = "sha256-m8sYA7YjvhqGFuU1L1y7BtndHGd6MpuH+hKzPSukxD0="; }; diff --git a/pkgs/dark-mode-notify.nix b/pkgs/dark-mode-notify.nix index dcceee5..e5a29c6 100644 --- a/pkgs/dark-mode-notify.nix +++ b/pkgs/dark-mode-notify.nix @@ -1,17 +1,10 @@ -{ stdenv -, lib -, xcodeenv -, dark-mode-notify-src -, sdkVersion -, ... -}: +{ stdenv, lib, xcodeenv, dark-mode-notify-src, sdkVersion, ... }: let xcode = xcodeenv.composeXcodeWrapper { version = sdkVersion; xcodeBaseDir = "/Applications/Xcode.app"; }; -in -stdenv.mkDerivation { +in stdenv.mkDerivation { name = "dark-mode-notify"; src = dark-mode-notify-src; buildPhase = '' diff --git a/pkgs/default.nix b/pkgs/default.nix index e6d2cd1..ac8f59f 100644 --- a/pkgs/default.nix +++ b/pkgs/default.nix @@ -1,5 +1,6 @@ { inputs }: -_: prev: { +_: prev: +{ inherit (inputs) kitty-icon kitty-themes; fishPlugins = prev.fishPlugins // { fisher = { @@ -8,16 +9,11 @@ _: prev: { }; }; helix = inputs.helix.packages.${prev.stdenv.system}.default; -} // builtins.mapAttrs - (name: extras: - prev.callPackage - (./. + "/${name}.nix") - ({ "${name}-src" = inputs."${name}-src"; } // extras)) - { +} // builtins.mapAttrs (name: extras: + prev.callPackage (./. + "/${name}.nix") + ({ "${name}-src" = inputs."${name}-src"; } // extras)) { cinny = { }; - dark-mode-notify = { - sdkVersion = "14.*"; - }; + dark-mode-notify = { sdkVersion = "14.*"; }; ia-writer-family = { }; yubiswitch = { }; } diff --git a/pkgs/ia-writer-family.nix b/pkgs/ia-writer-family.nix index 37a32c4..c0d66f2 100644 --- a/pkgs/ia-writer-family.nix +++ b/pkgs/ia-writer-family.nix @@ -1,9 +1,7 @@ { ia-writer-family-src, lib, stdenv }: -let - version = "20181224"; -in -stdenv.mkDerivation { +let version = "20181224"; +in stdenv.mkDerivation { name = "ia-writer-family-${version}"; src = ia-writer-family-src; diff --git a/pkgs/yubiswitch.nix b/pkgs/yubiswitch.nix index 43a0061..ea62a94 100644 --- a/pkgs/yubiswitch.nix +++ b/pkgs/yubiswitch.nix @@ -5,7 +5,8 @@ stdenv.mkDerivation { pname = "yubiswitch"; nativeBuildInputs = [ undmg unzip ]; src = fetchurl { - url = "https://github.com/pallotron/yubiswitch/releases/download/v${version}/yubiswitch_${version}.dmg"; + url = + "https://github.com/pallotron/yubiswitch/releases/download/v${version}/yubiswitch_${version}.dmg"; sha256 = "aR/3AXwAAhFYchfGCmqfNSs8uNnuLOCZ8B0JbXlKAf8="; }; diff --git a/templates/default.nix b/templates/default.nix index b3ffe82..079b674 100644 --- a/templates/default.nix +++ b/templates/default.nix @@ -1,7 +1,7 @@ let - mkTemplates = builtins.mapAttrs (name: attrs: attrs // { path = ./. + "/${name}"; }); -in -mkTemplates { + mkTemplates = + builtins.mapAttrs (name: attrs: attrs // { path = ./. + "/${name}"; }); +in mkTemplates { rust = { description = "A rust flake template based on flake.parts"; welcomeText = '' diff --git a/templates/rust/flake.nix b/templates/rust/flake.nix index f91ac92..58012c7 100644 --- a/templates/rust/flake.nix +++ b/templates/rust/flake.nix @@ -13,21 +13,17 @@ outputs = inputs@{ self, flake-parts, crane, pre-commit, ... }: flake-parts.lib.mkFlake { inherit inputs; } { imports = [ pre-commit.flakeModule ]; - systems = [ - "aarch64-darwin" - "aarch64-linux" - "x86_64-darwin" - "x86_64-linux" - ]; + systems = + [ "aarch64-darwin" "aarch64-linux" "x86_64-darwin" "x86_64-linux" ]; perSystem = { config, pkgs, system, ... }: let crane-lib = crane.lib.${system}; package = crane-lib.buildPackage { src = crane-lib.cleanCargoSource ./.; - nativeBuildInputs = pkgs.lib.optionals pkgs.stdenv.isDarwin [ pkgs.libiconv ]; + nativeBuildInputs = + pkgs.lib.optionals pkgs.stdenv.isDarwin [ pkgs.libiconv ]; }; - in - { + in { pre-commit.settings.hooks = { rustfmt.enable = true; clippy.enable = true; @@ -42,19 +38,12 @@ ''; inputsFrom = builtins.attrValues self.checks; - RUST_SRC_PATH = "${pkgs.rust.packages.stable.rustPlatform.rustLibSrc}"; - nativeBuildInputs = builtins.attrValues { - inherit (pkgs) - cargo - rustc - ; - }; + RUST_SRC_PATH = + "${pkgs.rust.packages.stable.rustPlatform.rustLibSrc}"; + nativeBuildInputs = + builtins.attrValues { inherit (pkgs) cargo rustc; }; buildInputs = builtins.attrValues { - inherit (pkgs) - rust-analyzer - rustfmt - clippy - ; + inherit (pkgs) rust-analyzer rustfmt clippy; }; }; };