Use nixfmt and nil
parent
76323f62fb
commit
be5c031895
|
@ -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;
|
||||
|
|
|
@ -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,17 +86,14 @@ 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-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;
|
||||
};
|
||||
matchBlocks."*".extraOptions = { IdentityAgent = socket; };
|
||||
};
|
||||
};
|
||||
|
||||
|
|
17
default.nix
17
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";
|
||||
(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
|
||||
}) { src = ./.; }).defaultNix
|
||||
|
|
58
flake.nix
58
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,26 +73,20 @@
|
|||
};
|
||||
|
||||
# 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
|
||||
darwinConfigurations = let
|
||||
bootstrap-x86 = makeOverridable darwinSystem {
|
||||
system = "x86_64-darwin";
|
||||
modules = [ ./darwin/bootstrap.nix { nixpkgs = nixpkgsConfig; } ];
|
||||
};
|
||||
in
|
||||
{
|
||||
in {
|
||||
# Mininal configurations to bootstrap systems
|
||||
inherit bootstrap-x86;
|
||||
bootstrap-arm = bootstrap-x86.override { system = "aarch64-darwin"; };
|
||||
|
@ -111,9 +97,7 @@
|
|||
modules = [{
|
||||
networking.computerName = "matbook pro m1";
|
||||
networking.hostName = "matbook";
|
||||
networking.knownNetworkServices = [
|
||||
"Wi-Fi"
|
||||
];
|
||||
networking.knownNetworkServices = [ "Wi-Fi" ];
|
||||
nix.settings.cores = 2;
|
||||
nix.settings.max-jobs = 4;
|
||||
|
||||
|
@ -144,9 +128,7 @@
|
|||
modules = [
|
||||
({ pkgs, lib, ... }: {
|
||||
users.primaryUser = workUserInfo;
|
||||
networking.knownNetworkServices = [
|
||||
"Wi-Fi"
|
||||
];
|
||||
networking.knownNetworkServices = [ "Wi-Fi" ];
|
||||
nix.settings.cores = 2;
|
||||
nix.settings.max-jobs = 5;
|
||||
|
||||
|
@ -198,7 +180,8 @@
|
|||
colors = import ./overlays/colors.nix;
|
||||
|
||||
# Overlay useful on Macs with Apple Silicon
|
||||
apple-silicon = _: prev: optionalAttrs (prev.stdenv.system == "aarch64-darwin") {
|
||||
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";
|
||||
|
@ -206,8 +189,11 @@
|
|||
};
|
||||
};
|
||||
|
||||
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;
|
||||
};
|
||||
|
|
|
@ -1,9 +1,7 @@
|
|||
{ config, ... }: {
|
||||
# Misc configuration files --------------------------------------------------------------------{{{
|
||||
|
||||
xdg = {
|
||||
enable = true;
|
||||
};
|
||||
xdg = { enable = true; };
|
||||
|
||||
home.file = {
|
||||
".pijulconfig".text = ''
|
||||
|
|
|
@ -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 <nixpkgs> { }); }'";
|
||||
nrpu = "nix repl --expr '{ pkgs = (import <nixpkgs> { config.allowUnfree = true; }); }' --impure";
|
||||
nrpu =
|
||||
"nix repl --expr '{ pkgs = (import <nixpkgs> { 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`.
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -31,7 +31,5 @@
|
|||
dark = "rose_pine";
|
||||
};
|
||||
|
||||
home.sessionVariables = {
|
||||
EDITOR = "hx";
|
||||
};
|
||||
home.sessionVariables = { EDITOR = "hx"; };
|
||||
}
|
||||
|
|
|
@ -1,17 +1,11 @@
|
|||
{ 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;
|
||||
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;
|
||||
|
@ -33,9 +27,8 @@ let
|
|||
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
|
||||
|
|
|
@ -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 {
|
||||
|
@ -33,9 +27,7 @@
|
|||
# enable = true;
|
||||
# extensions = [ pijul-vscode ];
|
||||
# };
|
||||
zoxide = {
|
||||
enable = true;
|
||||
};
|
||||
zoxide = { enable = true; };
|
||||
};
|
||||
# }}}
|
||||
|
||||
|
@ -44,21 +36,16 @@
|
|||
home.packages = builtins.attrValues ({
|
||||
inherit (pkgs)
|
||||
# GUI apps
|
||||
cinny
|
||||
discord-ptb
|
||||
lagrange
|
||||
obsidian
|
||||
slack
|
||||
zoom-us
|
||||
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
|
||||
m-cli
|
||||
# see /overlays/colors.nix
|
||||
is-dark-mode
|
||||
;
|
||||
is-dark-mode;
|
||||
});
|
||||
# }}}
|
||||
}
|
||||
|
|
|
@ -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";
|
||||
|
|
|
@ -1,8 +1,7 @@
|
|||
{ config, pkgs, ... }: {
|
||||
# tarsnap periodic backup configuration
|
||||
# {{{
|
||||
launchd.agents.tarsnap =
|
||||
let
|
||||
launchd.agents.tarsnap = let
|
||||
logPath = "${config.xdg.stateHome}/tarsnap";
|
||||
tarsnapBackup = pkgs.writeShellScriptBin "tarsnap-backup-helper" ''
|
||||
date=$(date -u +%Y-%m-%dT%H:%M:%SZ)
|
||||
|
@ -14,8 +13,7 @@
|
|||
-f $(uname -n)-$date \
|
||||
${config.home.homeDirectory}/{dotfiles.nix,Desktop,Development,Documents,Downloads}
|
||||
'';
|
||||
in
|
||||
{
|
||||
in {
|
||||
enable = true;
|
||||
config = {
|
||||
Label = "com.tarsnap.tarsnap";
|
||||
|
@ -43,6 +41,3 @@
|
|||
# }}}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
|
|
@ -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 "";
|
||||
|
|
|
@ -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
|
||||
};
|
||||
# }}}
|
||||
}
|
||||
|
|
|
@ -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 ? [ ]
|
||||
|
@ -16,16 +15,15 @@ self: inputs: nixpkgs:
|
|||
, 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;
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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,18 +127,13 @@ 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}
|
||||
|
@ -148,19 +144,21 @@ in
|
|||
'';
|
||||
};
|
||||
|
||||
programs.kitty.settings = optionalAttrs cfg.colors.enable
|
||||
{
|
||||
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";
|
||||
};
|
||||
|
||||
};
|
||||
|
||||
|
|
|
@ -1,20 +1,19 @@
|
|||
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";
|
||||
default = let prefix = if isDarwin then "/Users" else "/home";
|
||||
in "${prefix}/${cfg.username}";
|
||||
};
|
||||
nixConfigDirectory = mkOption {
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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=";
|
||||
};
|
||||
|
||||
|
|
|
@ -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 = ''
|
||||
|
|
|
@ -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 = { };
|
||||
}
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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=";
|
||||
};
|
||||
|
||||
|
|
|
@ -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 = ''
|
||||
|
|
|
@ -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;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
|
Loading…
Reference in New Issue