Use nixfmt and nil
parent
76323f62fb
commit
be5c031895
|
@ -1,5 +1,4 @@
|
||||||
{ config, pkgs, lib, ... }:
|
{ config, pkgs, lib, ... }: {
|
||||||
{
|
|
||||||
# Nix configuration ------------------------------------------------------------------------------
|
# Nix configuration ------------------------------------------------------------------------------
|
||||||
|
|
||||||
nix.settings = {
|
nix.settings = {
|
||||||
|
@ -20,14 +19,15 @@
|
||||||
"pre-commit-hooks.cachix.org-1:Pkk3Panw5AW24TOv6kz3PvLhlH8puAsJTBbOPmBo7Rc="
|
"pre-commit-hooks.cachix.org-1:Pkk3Panw5AW24TOv6kz3PvLhlH8puAsJTBbOPmBo7Rc="
|
||||||
"iohk.cachix.org-1:DpRUyj7h7V830dp/i6Nti+NEO2/nhblbov/8MW7Rqoo="
|
"iohk.cachix.org-1:DpRUyj7h7V830dp/i6Nti+NEO2/nhblbov/8MW7Rqoo="
|
||||||
];
|
];
|
||||||
trusted-users = [
|
trusted-users = [ "@admin" ];
|
||||||
"@admin"
|
|
||||||
];
|
|
||||||
# TODO: remove and replace with a launchd job
|
# TODO: remove and replace with a launchd job
|
||||||
# see https://github.com/NixOS/nix/issues/7273
|
# see https://github.com/NixOS/nix/issues/7273
|
||||||
auto-optimise-store = true;
|
auto-optimise-store = true;
|
||||||
experimental-features = [ "nix-command" "flakes" ];
|
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;
|
nix.configureBuildUsers = true;
|
||||||
|
|
||||||
|
@ -35,12 +35,8 @@
|
||||||
services.nix-daemon.enable = true;
|
services.nix-daemon.enable = true;
|
||||||
|
|
||||||
# Make Fish the default shell
|
# Make Fish the default shell
|
||||||
environment.shells = lib.mkForce (builtins.attrValues {
|
environment.shells = lib.mkForce
|
||||||
inherit (pkgs)
|
(builtins.attrValues { inherit (pkgs) bashInteractive fish zsh; });
|
||||||
bashInteractive
|
|
||||||
fish
|
|
||||||
zsh;
|
|
||||||
});
|
|
||||||
|
|
||||||
programs.fish.enable = true;
|
programs.fish.enable = true;
|
||||||
programs.fish.useBabelfish = true;
|
programs.fish.useBabelfish = true;
|
||||||
|
|
|
@ -2,8 +2,7 @@
|
||||||
let
|
let
|
||||||
inherit (config.users) primaryUser;
|
inherit (config.users) primaryUser;
|
||||||
caskPresent = cask: lib.any (x: x.name == cask) config.homebrew.casks;
|
caskPresent = cask: lib.any (x: x.name == cask) config.homebrew.casks;
|
||||||
in
|
in {
|
||||||
{
|
|
||||||
environment.shellInit = ''
|
environment.shellInit = ''
|
||||||
eval "$(${config.homebrew.brewPrefix}/brew shellenv)"
|
eval "$(${config.homebrew.brewPrefix}/brew shellenv)"
|
||||||
'';
|
'';
|
||||||
|
@ -87,19 +86,16 @@ in
|
||||||
# "zoom"
|
# "zoom"
|
||||||
];
|
];
|
||||||
|
|
||||||
home-manager.users.${primaryUser.username} =
|
home-manager.users.${primaryUser.username} = let
|
||||||
let
|
socket =
|
||||||
socket = "${primaryUser.homeDirectory}/Library/Containers/com.maxgoedjen.Secretive.SecretAgent/Data/socket.ssh";
|
"${primaryUser.homeDirectory}/Library/Containers/com.maxgoedjen.Secretive.SecretAgent/Data/socket.ssh";
|
||||||
in
|
in lib.mkIf (caskPresent "secretive" && config ? home-manager) {
|
||||||
lib.mkIf (caskPresent "secretive" && config ? home-manager) {
|
home.sessionVariables.SSH_AUTH_SOCK = socket;
|
||||||
home.sessionVariables.SSH_AUTH_SOCK = socket;
|
programs.ssh = {
|
||||||
programs.ssh = {
|
enable = true;
|
||||||
enable = true;
|
matchBlocks."*".extraOptions = { IdentityAgent = socket; };
|
||||||
matchBlocks."*".extraOptions = {
|
|
||||||
IdentityAgent = socket;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
};
|
||||||
|
};
|
||||||
|
|
||||||
# For cli packages that aren't currently available for macOS in `nixpkgs`.Packages should be
|
# For cli packages that aren't currently available for macOS in `nixpkgs`.Packages should be
|
||||||
# installed in `../home/programs.nix` whenever possible.
|
# installed in `../home/programs.nix` whenever possible.
|
||||||
|
|
19
default.nix
19
default.nix
|
@ -1,14 +1,7 @@
|
||||||
# See https://nixos.wiki/wiki/Flakes#Using_flakes_project_from_a_legacy_Nix
|
# See https://nixos.wiki/wiki/Flakes#Using_flakes_project_from_a_legacy_Nix
|
||||||
(import
|
(import (let lock = builtins.fromJSON (builtins.readFile ./flake.lock);
|
||||||
(
|
in fetchTarball {
|
||||||
let
|
url =
|
||||||
lock = builtins.fromJSON (builtins.readFile ./flake.lock);
|
"https://github.com/edolstra/flake-compat/archive/${lock.nodes.flake-compat.locked.rev}.tar.gz";
|
||||||
in
|
sha256 = lock.nodes.flake-compat.locked.narHash;
|
||||||
fetchTarball {
|
}) { src = ./.; }).defaultNix
|
||||||
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
|
|
||||||
|
|
200
flake.nix
200
flake.nix
|
@ -42,12 +42,7 @@
|
||||||
starship-src.flake = false;
|
starship-src.flake = false;
|
||||||
};
|
};
|
||||||
|
|
||||||
outputs =
|
outputs = { self, flake-utils, pre-commit, ... }@inputs:
|
||||||
{ self
|
|
||||||
, flake-utils
|
|
||||||
, pre-commit
|
|
||||||
, ...
|
|
||||||
}@inputs:
|
|
||||||
let
|
let
|
||||||
# this is a "functor" that takes an option name
|
# this is a "functor" that takes an option name
|
||||||
# this allows for creating identical modules
|
# this allows for creating identical modules
|
||||||
|
@ -55,10 +50,7 @@
|
||||||
mkPrimaryUserModule = import ./modules/mk-primary-user-module.nix;
|
mkPrimaryUserModule = import ./modules/mk-primary-user-module.nix;
|
||||||
|
|
||||||
inherit (inputs.darwin.lib) darwinSystem;
|
inherit (inputs.darwin.lib) darwinSystem;
|
||||||
inherit (inputs.nixpkgs.lib)
|
inherit (inputs.nixpkgs.lib) attrValues makeOverridable optionalAttrs;
|
||||||
attrValues
|
|
||||||
makeOverridable
|
|
||||||
optionalAttrs;
|
|
||||||
|
|
||||||
# Configuration for `nixpkgs`
|
# Configuration for `nixpkgs`
|
||||||
nixpkgsConfig = {
|
nixpkgsConfig = {
|
||||||
|
@ -81,94 +73,84 @@
|
||||||
};
|
};
|
||||||
|
|
||||||
# helper for defining nix-darwin systems
|
# helper for defining nix-darwin systems
|
||||||
mkDarwinSystem =
|
mkDarwinSystem = { modules ? [ ], homeModules ? [ ], ... }@args:
|
||||||
{ modules ? [ ]
|
import ./lib/mkDarwinSystem.nix self inputs nixpkgsConfig (args // {
|
||||||
, homeModules ? [ ]
|
|
||||||
, ...
|
|
||||||
}@args: import ./lib/mkDarwinSystem.nix self inputs nixpkgsConfig (args // {
|
|
||||||
inherit homeStateVersion;
|
inherit homeStateVersion;
|
||||||
modules = attrValues self.darwinModules ++ modules;
|
modules = attrValues self.darwinModules ++ modules;
|
||||||
homeModules = attrValues self.homeManagerModules ++ homeModules;
|
homeModules = attrValues self.homeManagerModules ++ homeModules;
|
||||||
});
|
});
|
||||||
in
|
in {
|
||||||
{
|
|
||||||
# `nix-darwin` configs
|
# `nix-darwin` configs
|
||||||
darwinConfigurations =
|
darwinConfigurations = let
|
||||||
let
|
bootstrap-x86 = makeOverridable darwinSystem {
|
||||||
bootstrap-x86 = makeOverridable darwinSystem {
|
system = "x86_64-darwin";
|
||||||
system = "x86_64-darwin";
|
modules = [ ./darwin/bootstrap.nix { nixpkgs = nixpkgsConfig; } ];
|
||||||
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;
|
|
||||||
}];
|
|
||||||
})
|
|
||||||
];
|
|
||||||
};
|
|
||||||
};
|
};
|
||||||
|
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 --------------------------------------------------------------- {{{
|
# Overlays --------------------------------------------------------------- {{{
|
||||||
|
|
||||||
|
@ -198,17 +180,21 @@
|
||||||
colors = import ./overlays/colors.nix;
|
colors = import ./overlays/colors.nix;
|
||||||
|
|
||||||
# Overlay useful on Macs with Apple Silicon
|
# Overlay useful on Macs with Apple Silicon
|
||||||
apple-silicon = _: prev: optionalAttrs (prev.stdenv.system == "aarch64-darwin") {
|
apple-silicon = _: prev:
|
||||||
# Add access to x86 packages system is running Apple Silicon
|
optionalAttrs (prev.stdenv.system == "aarch64-darwin") {
|
||||||
pkgs-x86 = import inputs.nixpkgs {
|
# Add access to x86 packages system is running Apple Silicon
|
||||||
system = "x86_64-darwin";
|
pkgs-x86 = import inputs.nixpkgs {
|
||||||
inherit (nixpkgsConfig) config;
|
system = "x86_64-darwin";
|
||||||
|
inherit (nixpkgsConfig) config;
|
||||||
|
};
|
||||||
};
|
};
|
||||||
};
|
|
||||||
|
|
||||||
homebrew-enabled = _: prev: optionalAttrs prev.stdenv.isDarwin {
|
homebrew-enabled = _: prev:
|
||||||
lib = prev.lib // { homebrew-enabled = inputs.homebrew-enabled.value; };
|
optionalAttrs prev.stdenv.isDarwin {
|
||||||
};
|
lib = prev.lib // {
|
||||||
|
homebrew-enabled = inputs.homebrew-enabled.value;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
extra-pkgs = import ./pkgs { inherit inputs; };
|
extra-pkgs = import ./pkgs { inherit inputs; };
|
||||||
};
|
};
|
||||||
|
@ -239,7 +225,8 @@
|
||||||
starship = import ./home/starship.nix;
|
starship = import ./home/starship.nix;
|
||||||
starship-symbols = import ./home/starship-symbols.nix;
|
starship-symbols = import ./home/starship-symbols.nix;
|
||||||
# modules
|
# 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-helix-extras = import ./modules/home/programs/helix/extras.nix;
|
||||||
programs-kitty-extras = import ./modules/home/programs/kitty/extras.nix;
|
programs-kitty-extras = import ./modules/home/programs/kitty/extras.nix;
|
||||||
home-primary-user = mkPrimaryUserModule "home";
|
home-primary-user = mkPrimaryUserModule "home";
|
||||||
|
@ -247,18 +234,21 @@
|
||||||
|
|
||||||
templates = import ./templates;
|
templates = import ./templates;
|
||||||
} // flake-utils.lib.eachDefaultSystem (system: {
|
} // 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 {
|
checks.pre-commit = pre-commit.lib.${system}.run {
|
||||||
src = ./.;
|
src = ./.;
|
||||||
hooks = {
|
hooks = {
|
||||||
deadnix.enable = true;
|
deadnix.enable = true;
|
||||||
nixpkgs-fmt.enable = true;
|
nil.enable = true;
|
||||||
|
nixfmt.enable = true;
|
||||||
statix.enable = true;
|
statix.enable = true;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
devShells = let pkgs = self.legacyPackages.${system}; in {
|
devShells = let pkgs = self.legacyPackages.${system};
|
||||||
|
in {
|
||||||
default = pkgs.mkShell {
|
default = pkgs.mkShell {
|
||||||
inherit (self.checks.${system}.pre-commit) shellHook;
|
inherit (self.checks.${system}.pre-commit) shellHook;
|
||||||
};
|
};
|
||||||
|
|
|
@ -1,9 +1,7 @@
|
||||||
{ config, ... }: {
|
{ config, ... }: {
|
||||||
# Misc configuration files --------------------------------------------------------------------{{{
|
# Misc configuration files --------------------------------------------------------------------{{{
|
||||||
|
|
||||||
xdg = {
|
xdg = { enable = true; };
|
||||||
enable = true;
|
|
||||||
};
|
|
||||||
|
|
||||||
home.file = {
|
home.file = {
|
||||||
".pijulconfig".text = ''
|
".pijulconfig".text = ''
|
||||||
|
|
|
@ -7,10 +7,7 @@
|
||||||
|
|
||||||
# Add Fish plugins
|
# Add Fish plugins
|
||||||
home.packages = builtins.attrValues {
|
home.packages = builtins.attrValues {
|
||||||
inherit (pkgs.fishPlugins)
|
inherit (pkgs.fishPlugins) autopair-fish colored-man-pages done;
|
||||||
autopair-fish
|
|
||||||
colored-man-pages
|
|
||||||
done;
|
|
||||||
};
|
};
|
||||||
programs.fish.plugins = [ pkgs.fishPlugins.fisher ];
|
programs.fish.plugins = [ pkgs.fishPlugins.fisher ];
|
||||||
|
|
||||||
|
@ -136,10 +133,8 @@
|
||||||
|
|
||||||
# Aliases
|
# Aliases
|
||||||
programs.fish.shellAliases =
|
programs.fish.shellAliases =
|
||||||
let
|
let inherit (config.home.primaryUser) nixConfigDirectory;
|
||||||
inherit (config.home.primaryUser) nixConfigDirectory;
|
in {
|
||||||
in
|
|
||||||
{
|
|
||||||
# Nix related
|
# Nix related
|
||||||
from-nix = "from-dir ${nixConfigDirectory}";
|
from-nix = "from-dir ${nixConfigDirectory}";
|
||||||
# darwin-rebuild build
|
# darwin-rebuild build
|
||||||
|
@ -147,7 +142,8 @@
|
||||||
# darwin-rebuild switch full
|
# darwin-rebuild switch full
|
||||||
drsf = "from-nix darwin-rebuild switch --flake .";
|
drsf = "from-nix darwin-rebuild switch --flake .";
|
||||||
# darwin-rebuild switch (no homebrew)
|
# 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
|
# edit darwin-rebuild config in code/codium
|
||||||
drc = "code ${nixConfigDirectory}";
|
drc = "code ${nixConfigDirectory}";
|
||||||
# edit darwin-rebuild config in vim
|
# edit darwin-rebuild config in vim
|
||||||
|
@ -164,7 +160,8 @@
|
||||||
nsh = "nix shell";
|
nsh = "nix shell";
|
||||||
nshu = "nix-unfree shell";
|
nshu = "nix-unfree shell";
|
||||||
nrp = "nix repl --expr '{ pkgs = (import <nixpkgs> { }); }'";
|
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
|
# Other
|
||||||
".." = "cd ..";
|
".." = "cd ..";
|
||||||
|
@ -183,7 +180,8 @@
|
||||||
colortest = "${pkgs.terminal-colors}/bin/terminal-colors -o";
|
colortest = "${pkgs.terminal-colors}/bin/terminal-colors -o";
|
||||||
} // lib.optionalAttrs pkgs.stdenv.isDarwin {
|
} // lib.optionalAttrs pkgs.stdenv.isDarwin {
|
||||||
sb = "set-background-to-macOS";
|
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`.
|
# Configuration that should be above `loginShellInit` and `interactiveShellInit`.
|
||||||
|
|
|
@ -17,10 +17,7 @@
|
||||||
help.autocorrect = "prompt";
|
help.autocorrect = "prompt";
|
||||||
};
|
};
|
||||||
|
|
||||||
programs.git.ignores = [
|
programs.git.ignores = [ ".DS_Store" ".direnv" ];
|
||||||
".DS_Store"
|
|
||||||
".direnv"
|
|
||||||
];
|
|
||||||
|
|
||||||
# Enhanced diffs
|
# Enhanced diffs
|
||||||
programs.git.delta.enable = true;
|
programs.git.delta.enable = true;
|
||||||
|
|
|
@ -31,7 +31,5 @@
|
||||||
dark = "rose_pine";
|
dark = "rose_pine";
|
||||||
};
|
};
|
||||||
|
|
||||||
home.sessionVariables = {
|
home.sessionVariables = { EDITOR = "hx"; };
|
||||||
EDITOR = "hx";
|
|
||||||
};
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,41 +1,34 @@
|
||||||
{ pkgs, ... }:
|
{ pkgs, ... }:
|
||||||
# Let-In --------------------------------------------------------------------------------------- {{{
|
# Let-In --------------------------------------------------------------------------------------- {{{
|
||||||
let
|
let
|
||||||
colorsToKitty = colors: with colors; {
|
colorsToKitty = colors:
|
||||||
inherit
|
with colors; {
|
||||||
background
|
inherit background foreground selection_background selection_foreground
|
||||||
foreground
|
tab_bar_background active_tab_background active_tab_foreground
|
||||||
selection_background
|
inactive_tab_background inactive_tab_foreground;
|
||||||
selection_foreground
|
cursor = white;
|
||||||
tab_bar_background
|
cursor_text_color = background;
|
||||||
active_tab_background
|
color0 = black;
|
||||||
active_tab_foreground
|
color8 = black;
|
||||||
inactive_tab_background
|
color1 = red;
|
||||||
inactive_tab_foreground;
|
color9 = red;
|
||||||
cursor = white;
|
color2 = green;
|
||||||
cursor_text_color = background;
|
color10 = lime;
|
||||||
color0 = black;
|
color3 = yellow;
|
||||||
color8 = black;
|
color11 = orange;
|
||||||
color1 = red;
|
color4 = blue;
|
||||||
color9 = red;
|
color12 = blue;
|
||||||
color2 = green;
|
color5 = magenta;
|
||||||
color10 = lime;
|
color13 = magenta;
|
||||||
color3 = yellow;
|
color6 = cyan;
|
||||||
color11 = orange;
|
color14 = cyan;
|
||||||
color4 = blue;
|
color7 = white;
|
||||||
color12 = blue;
|
color15 = white;
|
||||||
color5 = magenta;
|
url_color = brightgreen;
|
||||||
color13 = magenta;
|
};
|
||||||
color6 = cyan;
|
|
||||||
color14 = cyan;
|
|
||||||
color7 = white;
|
|
||||||
color15 = white;
|
|
||||||
url_color = brightgreen;
|
|
||||||
};
|
|
||||||
font = "Rec Mono Duotone";
|
font = "Rec Mono Duotone";
|
||||||
in
|
# }}}
|
||||||
# }}}
|
in {
|
||||||
{
|
|
||||||
# Kitty terminal
|
# Kitty terminal
|
||||||
# https://sw.kovidgoyal.net/kitty/conf.html
|
# https://sw.kovidgoyal.net/kitty/conf.html
|
||||||
# https://rycee.gitlab.io/home-manager/options.html#opt-programs.kitty.enable
|
# 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
|
# https://rycee.gitlab.io/home-manager/options.html#opt-programs.bat.enable
|
||||||
bat = {
|
bat = {
|
||||||
enable = true;
|
enable = true;
|
||||||
config = {
|
config = { style = "auto"; };
|
||||||
style = "auto";
|
|
||||||
};
|
|
||||||
};
|
};
|
||||||
# Direnv, load and unload environment variables depending on the current directory.
|
# Direnv, load and unload environment variables depending on the current directory.
|
||||||
# https://direnv.net
|
# https://direnv.net
|
||||||
|
@ -16,12 +14,8 @@
|
||||||
enable = true;
|
enable = true;
|
||||||
nix-direnv.enable = true;
|
nix-direnv.enable = true;
|
||||||
};
|
};
|
||||||
nix-index = {
|
nix-index = { enable = true; };
|
||||||
enable = true;
|
nushell = { enable = true; };
|
||||||
};
|
|
||||||
nushell = {
|
|
||||||
enable = true;
|
|
||||||
};
|
|
||||||
ssh = {
|
ssh = {
|
||||||
enable = true;
|
enable = true;
|
||||||
matchBlocks."*".extraOptions = lib.optionalAttrs pkgs.stdenv.isDarwin {
|
matchBlocks."*".extraOptions = lib.optionalAttrs pkgs.stdenv.isDarwin {
|
||||||
|
@ -31,11 +25,9 @@
|
||||||
};
|
};
|
||||||
# vscode = {
|
# vscode = {
|
||||||
# enable = true;
|
# enable = true;
|
||||||
# extensions = [ pijul-vscode ];
|
# extensions = [ pijul-vscode ];
|
||||||
# };
|
# };
|
||||||
zoxide = {
|
zoxide = { enable = true; };
|
||||||
enable = true;
|
|
||||||
};
|
|
||||||
};
|
};
|
||||||
# }}}
|
# }}}
|
||||||
|
|
||||||
|
@ -43,22 +35,17 @@
|
||||||
|
|
||||||
home.packages = builtins.attrValues ({
|
home.packages = builtins.attrValues ({
|
||||||
inherit (pkgs)
|
inherit (pkgs)
|
||||||
# GUI apps
|
# GUI apps
|
||||||
cinny
|
cinny discord-ptb lagrange obsidian slack zoom-us
|
||||||
discord-ptb
|
|
||||||
lagrange
|
|
||||||
obsidian
|
|
||||||
slack
|
|
||||||
zoom-us
|
|
||||||
|
|
||||||
# System
|
# System
|
||||||
|
curl wget
|
||||||
# lightweight session management
|
# lightweight session management
|
||||||
abduco
|
abduco
|
||||||
# archive tool
|
# archive tool
|
||||||
atool
|
atool
|
||||||
# fancy version of `top` with ASCII graphs
|
# fancy version of `top` with ASCII graphs
|
||||||
bottom
|
bottom
|
||||||
curl
|
|
||||||
# fancy version of `du`
|
# fancy version of `du`
|
||||||
du-dust
|
du-dust
|
||||||
# fancy version of `ls`
|
# fancy version of `ls`
|
||||||
|
@ -79,7 +66,6 @@
|
||||||
thefuck
|
thefuck
|
||||||
# extract RAR archives
|
# extract RAR archives
|
||||||
unrar
|
unrar
|
||||||
wget
|
|
||||||
# extract XZ archives
|
# extract XZ archives
|
||||||
xz
|
xz
|
||||||
|
|
||||||
|
@ -106,23 +92,19 @@
|
||||||
xh
|
xh
|
||||||
|
|
||||||
# Useful nix related tools
|
# Useful nix related tools
|
||||||
|
nixfmt nix-prefetch-git nix-tree
|
||||||
# adding/managing alternative binary caches hosted by Cachix
|
# adding/managing alternative binary caches hosted by Cachix
|
||||||
cachix
|
cachix
|
||||||
# run software from nixpkgs without installing it
|
# run software from nixpkgs without installing it
|
||||||
comma
|
comma
|
||||||
nixpkgs-fmt
|
|
||||||
nix-prefetch-git
|
|
||||||
nix-tree
|
|
||||||
# nix language server
|
# nix language server
|
||||||
nil
|
nil;
|
||||||
;
|
|
||||||
} // lib.optionalAttrs pkgs.stdenv.isDarwin {
|
} // lib.optionalAttrs pkgs.stdenv.isDarwin {
|
||||||
inherit (pkgs)
|
inherit (pkgs)
|
||||||
# useful macOS CLI commands
|
# useful macOS CLI commands
|
||||||
m-cli
|
m-cli
|
||||||
# see /overlays/colors.nix
|
# see /overlays/colors.nix
|
||||||
is-dark-mode
|
is-dark-mode;
|
||||||
;
|
|
||||||
});
|
});
|
||||||
# }}}
|
# }}}
|
||||||
}
|
}
|
||||||
|
|
|
@ -2,8 +2,8 @@
|
||||||
# dark-mode-notify configuration
|
# dark-mode-notify configuration
|
||||||
# {{{
|
# {{{
|
||||||
launchd.agents.dark-mode-notify =
|
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;
|
enable = true;
|
||||||
config = {
|
config = {
|
||||||
Label = "ke.bou.dark-mode-notify";
|
Label = "ke.bou.dark-mode-notify";
|
||||||
|
|
|
@ -1,48 +1,43 @@
|
||||||
{ config, pkgs, ... }: {
|
{ config, pkgs, ... }: {
|
||||||
# tarsnap periodic backup configuration
|
# tarsnap periodic backup configuration
|
||||||
# {{{
|
# {{{
|
||||||
launchd.agents.tarsnap =
|
launchd.agents.tarsnap = let
|
||||||
let
|
logPath = "${config.xdg.stateHome}/tarsnap";
|
||||||
logPath = "${config.xdg.stateHome}/tarsnap";
|
tarsnapBackup = pkgs.writeShellScriptBin "tarsnap-backup-helper" ''
|
||||||
tarsnapBackup = pkgs.writeShellScriptBin "tarsnap-backup-helper" ''
|
date=$(date -u +%Y-%m-%dT%H:%M:%SZ)
|
||||||
date=$(date -u +%Y-%m-%dT%H:%M:%SZ)
|
echo
|
||||||
echo
|
echo "Running tarsnap backup for $date"
|
||||||
echo "Running tarsnap backup for $date"
|
/opt/homebrew/bin/tarsnap -c \
|
||||||
/opt/homebrew/bin/tarsnap -c \
|
--configfile ${config.home.homeDirectory}/.tarsnaprc \
|
||||||
--configfile ${config.home.homeDirectory}/.tarsnaprc \
|
--keyfile ${config.xdg.configHome}/tarsnap/write-only.key \
|
||||||
--keyfile ${config.xdg.configHome}/tarsnap/write-only.key \
|
-f $(uname -n)-$date \
|
||||||
-f $(uname -n)-$date \
|
${config.home.homeDirectory}/{dotfiles.nix,Desktop,Development,Documents,Downloads}
|
||||||
${config.home.homeDirectory}/{dotfiles.nix,Desktop,Development,Documents,Downloads}
|
'';
|
||||||
'';
|
in {
|
||||||
in
|
enable = true;
|
||||||
{
|
config = {
|
||||||
enable = true;
|
Label = "com.tarsnap.tarsnap";
|
||||||
config = {
|
StandardErrorPath = "${logPath}/error.log";
|
||||||
Label = "com.tarsnap.tarsnap";
|
StandardOutPath = "${logPath}/out.log";
|
||||||
StandardErrorPath = "${logPath}/error.log";
|
StartCalendarInterval = [
|
||||||
StandardOutPath = "${logPath}/out.log";
|
{
|
||||||
StartCalendarInterval = [
|
# every sunday
|
||||||
{
|
Weekday = 0;
|
||||||
# every sunday
|
# at midnight
|
||||||
Weekday = 0;
|
Hour = 0;
|
||||||
# at midnight
|
Minute = 0;
|
||||||
Hour = 0;
|
}
|
||||||
Minute = 0;
|
{
|
||||||
}
|
# every wednesday
|
||||||
{
|
Weekday = 3;
|
||||||
# every wednesday
|
# at noon
|
||||||
Weekday = 3;
|
Hour = 12;
|
||||||
# at noon
|
Minute = 0;
|
||||||
Hour = 12;
|
}
|
||||||
Minute = 0;
|
];
|
||||||
}
|
Program = "${tarsnapBackup}/bin/tarsnap-backup-helper";
|
||||||
];
|
|
||||||
Program = "${tarsnapBackup}/bin/tarsnap-backup-helper";
|
|
||||||
};
|
|
||||||
};
|
};
|
||||||
|
};
|
||||||
# }}}
|
# }}}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
{ lib, ... }:
|
{ lib, ... }:
|
||||||
let inherit (lib) mkDefault; in
|
let inherit (lib) mkDefault;
|
||||||
{
|
in {
|
||||||
programs.starship.settings = {
|
programs.starship.settings = {
|
||||||
aws.symbol = mkDefault " ";
|
aws.symbol = mkDefault " ";
|
||||||
battery.full_symbol = mkDefault "";
|
battery.full_symbol = mkDefault "";
|
||||||
|
|
|
@ -9,12 +9,14 @@
|
||||||
# See docs here: https://starship.rs/config/
|
# See docs here: https://starship.rs/config/
|
||||||
# Symbols config configured in Flake.
|
# Symbols config configured in Flake.
|
||||||
|
|
||||||
battery.display = [
|
battery.display = [{
|
||||||
{ threshold = 25; } # display battery information if charge is <= 25%
|
threshold = 25;
|
||||||
];
|
} # display battery information if charge is <= 25%
|
||||||
|
];
|
||||||
directory.fish_style_pwd_dir_length = 1; # turn on fish directory truncation
|
directory.fish_style_pwd_dir_length = 1; # turn on fish directory truncation
|
||||||
directory.truncation_length = 2; # number of directories not to truncate
|
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
|
# taken from https://github.com/malob/nixpkgs/blob/27e04346555277687a60c0168969b3945c2b25ba/lib/mkDarwinSystem.nix
|
||||||
self: inputs: nixpkgs:
|
self: inputs: nixpkgs:
|
||||||
|
|
||||||
{ primaryUser
|
{ primaryUser, system ? "aarch64-darwin"
|
||||||
, system ? "aarch64-darwin"
|
|
||||||
|
|
||||||
# `nix-darwin` modules to include
|
# `nix-darwin` modules to include
|
||||||
, modules ? [ ]
|
, modules ? [ ]
|
||||||
|
@ -12,20 +11,19 @@ self: inputs: nixpkgs:
|
||||||
|
|
||||||
# Value for `home-manager`'s `home.stateVersion` option.
|
# Value for `home-manager`'s `home.stateVersion` option.
|
||||||
, homeStateVersion
|
, homeStateVersion
|
||||||
# `home-manager` modules to include
|
# `home-manager` modules to include
|
||||||
, homeModules ? [ ]
|
, homeModules ? [ ]
|
||||||
# Additional `home-manager` modules to include, useful when reusing a configuration with
|
# Additional `home-manager` modules to include, useful when reusing a configuration with
|
||||||
# `lib.makeOverridable`.
|
# `lib.makeOverridable`.
|
||||||
, extraHomeModules ? [ ]
|
, extraHomeModules ? [ ] }:
|
||||||
}:
|
|
||||||
|
|
||||||
inputs.darwin.lib.darwinSystem {
|
inputs.darwin.lib.darwinSystem {
|
||||||
inherit system;
|
inherit system;
|
||||||
modules = modules ++ extraModules ++ [
|
modules = modules ++ extraModules ++ [
|
||||||
inputs.home-manager.darwinModules.home-manager
|
inputs.home-manager.darwinModules.home-manager
|
||||||
({ config, ... }:
|
({ config, ... }:
|
||||||
let cfg = config.users.primaryUser; in
|
let cfg = config.users.primaryUser;
|
||||||
{
|
in {
|
||||||
users.primaryUser = primaryUser;
|
users.primaryUser = primaryUser;
|
||||||
|
|
||||||
inherit nixpkgs;
|
inherit nixpkgs;
|
||||||
|
|
|
@ -5,10 +5,10 @@ let
|
||||||
inherit (cfg) extras;
|
inherit (cfg) extras;
|
||||||
tomlFormat = pkgs.formats.toml { };
|
tomlFormat = pkgs.formats.toml { };
|
||||||
inherit (lib) mkIf mkEnableOption mkOption types;
|
inherit (lib) mkIf mkEnableOption mkOption types;
|
||||||
in
|
in {
|
||||||
{
|
|
||||||
options.programs.helix.extras = {
|
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 {
|
autoTheme.light = mkOption {
|
||||||
type = types.str;
|
type = types.str;
|
||||||
|
@ -23,14 +23,17 @@ in
|
||||||
|
|
||||||
config = mkIf (cfg.enable && extras.autoTheme.enable) {
|
config = mkIf (cfg.enable && extras.autoTheme.enable) {
|
||||||
xdg.configFile = {
|
xdg.configFile = {
|
||||||
"helix/light.toml".source = tomlFormat.generate "helix-autotheme" (cfg.settings // { theme = extras.autoTheme.light; });
|
"helix/light.toml".source = tomlFormat.generate "helix-autotheme"
|
||||||
"helix/dark.toml".source = tomlFormat.generate "helix-autotheme" (cfg.settings // { theme = extras.autoTheme.dark; });
|
(cfg.settings // { theme = extras.autoTheme.light; });
|
||||||
|
"helix/dark.toml".source = tomlFormat.generate "helix-autotheme"
|
||||||
|
(cfg.settings // { theme = extras.autoTheme.dark; });
|
||||||
};
|
};
|
||||||
|
|
||||||
programs.fish.functions = {
|
programs.fish.functions = {
|
||||||
hx = {
|
hx = {
|
||||||
wraps = "hx";
|
wraps = "hx";
|
||||||
description = "Helix invocation wrapper to automatically select the right theme";
|
description =
|
||||||
|
"Helix invocation wrapper to automatically select the right theme";
|
||||||
body = ''
|
body = ''
|
||||||
if is-dark-mode
|
if is-dark-mode
|
||||||
command hx --config ${config.xdg.configHome}/helix/dark.toml $argv
|
command hx --config ${config.xdg.configHome}/helix/dark.toml $argv
|
||||||
|
|
|
@ -9,24 +9,24 @@ let
|
||||||
makeKakouneFace = face: name:
|
makeKakouneFace = face: name:
|
||||||
let
|
let
|
||||||
mkColor = name:
|
mkColor = name:
|
||||||
if hasPrefix "#" name
|
if hasPrefix "#" name then
|
||||||
then "rgb:${substring 1 (-1) name}"
|
"rgb:${substring 1 (-1) name}"
|
||||||
else if hasPrefix "!#" name
|
else if hasPrefix "!#" name then
|
||||||
then "rgba:${substring 2 (-1) name}"
|
"rgba:${substring 2 (-1) name}"
|
||||||
else name;
|
else
|
||||||
value =
|
name;
|
||||||
if isList name
|
value = if isList name then
|
||||||
then concatStringsSep "," (map mkColor name)
|
concatStringsSep "," (map mkColor name)
|
||||||
else mkColor name;
|
else
|
||||||
in
|
mkColor name;
|
||||||
"face global ${face} ${value}";
|
in "face global ${face} ${value}";
|
||||||
|
|
||||||
makeKakouneColors = faces:
|
makeKakouneColors = faces:
|
||||||
concatStringsSep "\n"
|
concatStringsSep "\n"
|
||||||
([ "# Generated by home-manager" ]
|
([ "# Generated by home-manager" ] ++ mapAttrsToList makeKakouneFace faces);
|
||||||
++ mapAttrsToList makeKakouneFace faces);
|
|
||||||
|
|
||||||
writeKakouneConfig = file: config: pkgs.writeText file (makeKakouneColors config);
|
writeKakouneConfig = file: config:
|
||||||
|
pkgs.writeText file (makeKakouneColors config);
|
||||||
|
|
||||||
kakoune-colors = {
|
kakoune-colors = {
|
||||||
light = writeKakouneConfig "light.kak" cfg.colors.light;
|
light = writeKakouneConfig "light.kak" cfg.colors.light;
|
||||||
|
@ -44,8 +44,7 @@ let
|
||||||
kak-dark = pkgs.writeShellScriptBin "kak-dark" ''
|
kak-dark = pkgs.writeShellScriptBin "kak-dark" ''
|
||||||
${kak-background}/bin/kak-background dark
|
${kak-background}/bin/kak-background dark
|
||||||
'';
|
'';
|
||||||
in
|
in {
|
||||||
{
|
|
||||||
options.programs.kakoune.extras = {
|
options.programs.kakoune.extras = {
|
||||||
colors = {
|
colors = {
|
||||||
enable = mkEnableOption "Custom kakoune color handling";
|
enable = mkEnableOption "Custom kakoune color handling";
|
||||||
|
@ -63,11 +62,8 @@ in
|
||||||
};
|
};
|
||||||
|
|
||||||
config = mkIf config.programs.kakoune.enable {
|
config = mkIf config.programs.kakoune.enable {
|
||||||
home.packages = mkIf cfg.colors.enable [
|
home.packages =
|
||||||
kak-light
|
mkIf cfg.colors.enable [ kak-light kak-dark kak-background ];
|
||||||
kak-dark
|
|
||||||
kak-background
|
|
||||||
];
|
|
||||||
|
|
||||||
xdg.configFile."kak/colors/light.kak".source = kakoune-colors.light;
|
xdg.configFile."kak/colors/light.kak".source = kakoune-colors.light;
|
||||||
xdg.configFile."kak/colors/dark.kak".source = kakoune-colors.dark;
|
xdg.configFile."kak/colors/dark.kak".source = kakoune-colors.dark;
|
||||||
|
|
|
@ -7,10 +7,12 @@ let
|
||||||
cfg = config.programs.kitty.extras;
|
cfg = config.programs.kitty.extras;
|
||||||
|
|
||||||
# Create a Kitty config string from a Nix set
|
# 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
|
# 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
|
# Path in Nix store containing light and dark kitty color configs
|
||||||
kitty-colors = pkgs.symlinkJoin {
|
kitty-colors = pkgs.symlinkJoin {
|
||||||
|
@ -36,8 +38,7 @@ let
|
||||||
term-dark = pkgs.writeShellScriptBin "term-dark" ''
|
term-dark = pkgs.writeShellScriptBin "term-dark" ''
|
||||||
${term-background}/bin/term-background ${cfg.colors.dark-name}
|
${term-background}/bin/term-background ${cfg.colors.dark-name}
|
||||||
'';
|
'';
|
||||||
in
|
in {
|
||||||
{
|
|
||||||
|
|
||||||
options.programs.kitty.extras = {
|
options.programs.kitty.extras = {
|
||||||
colors = {
|
colors = {
|
||||||
|
@ -112,13 +113,13 @@ in
|
||||||
appPath = mkOption {
|
appPath = mkOption {
|
||||||
type = types.str;
|
type = types.str;
|
||||||
default = null;
|
default = null;
|
||||||
description = ''Path to kitty.app'';
|
description = "Path to kitty.app";
|
||||||
};
|
};
|
||||||
|
|
||||||
iconPath = mkOption {
|
iconPath = mkOption {
|
||||||
type = types.str;
|
type = types.str;
|
||||||
default = null;
|
default = null;
|
||||||
description = ''Path to kitty icns'';
|
description = "Path to kitty icns";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -126,41 +127,38 @@ in
|
||||||
|
|
||||||
config = mkIf config.programs.kitty.enable {
|
config = mkIf config.programs.kitty.enable {
|
||||||
|
|
||||||
home.packages = mkIf cfg.colors.enable [
|
home.packages =
|
||||||
term-light
|
mkIf cfg.colors.enable [ term-light term-dark term-background ];
|
||||||
term-dark
|
|
||||||
term-background
|
|
||||||
];
|
|
||||||
|
|
||||||
home.activation =
|
home.activation = let fileicon = "/opt/homebrew/bin/fileicon";
|
||||||
let
|
in mkIf (pkgs.stdenv.isDarwin && cfg.fixIcon.enable) {
|
||||||
fileicon = "/opt/homebrew/bin/fileicon";
|
cleanupKittyIcon =
|
||||||
in
|
lib.hm.dag.entryBetween [ "darwinApps" ] [ "writeBoundary" ] ''
|
||||||
mkIf (pkgs.stdenv.isDarwin && cfg.fixIcon.enable) {
|
|
||||||
cleanupKittyIcon = lib.hm.dag.entryBetween [ "darwinApps" ] [ "writeBoundary" ] ''
|
|
||||||
if ${fileicon} test ${cfg.fixIcon.appPath};
|
if ${fileicon} test ${cfg.fixIcon.appPath};
|
||||||
then
|
then
|
||||||
$DRY_RUN_CMD sudo ${fileicon} rm ${cfg.fixIcon.appPath}
|
$DRY_RUN_CMD sudo ${fileicon} rm ${cfg.fixIcon.appPath}
|
||||||
fi
|
fi
|
||||||
'';
|
'';
|
||||||
fixKittyIcon = lib.hm.dag.entryAfter [ "darwinApps" ] ''
|
fixKittyIcon = lib.hm.dag.entryAfter [ "darwinApps" ] ''
|
||||||
$DRY_RUN_CMD sudo ${fileicon} set ${cfg.fixIcon.appPath} ${cfg.fixIcon.iconPath}
|
$DRY_RUN_CMD sudo ${fileicon} set ${cfg.fixIcon.appPath} ${cfg.fixIcon.iconPath}
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
|
|
||||||
programs.kitty.settings = optionalAttrs cfg.colors.enable
|
programs.kitty.settings = optionalAttrs cfg.colors.enable {
|
||||||
{
|
allow_remote_control = "yes";
|
||||||
allow_remote_control = "yes";
|
listen_on = "unix:/tmp/mykitty";
|
||||||
listen_on = "unix:/tmp/mykitty";
|
} // optionalAttrs (cfg.useSymbolsFromNerdFont != "") {
|
||||||
} // optionalAttrs (cfg.useSymbolsFromNerdFont != "") {
|
|
||||||
|
|
||||||
# https://github.com/ryanoasis/nerd-fonts/wiki/Glyph-Sets-and-Code-Points
|
# 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" =
|
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,21 +1,20 @@
|
||||||
optionName: { config, lib, pkgs, ... }:
|
optionName:
|
||||||
|
{ config, lib, pkgs, ... }:
|
||||||
|
|
||||||
let
|
let
|
||||||
inherit (lib) mkOption types;
|
inherit (lib) mkOption types;
|
||||||
inherit (pkgs.stdenv) isDarwin;
|
inherit (pkgs.stdenv) isDarwin;
|
||||||
cfg = config.${optionName}.primaryUser;
|
cfg = config.${optionName}.primaryUser;
|
||||||
in
|
|
||||||
|
|
||||||
{
|
in {
|
||||||
options.${optionName}.primaryUser = {
|
options.${optionName}.primaryUser = {
|
||||||
username = mkOption { type = types.str; };
|
username = mkOption { type = types.str; };
|
||||||
fullName = mkOption { type = types.str; };
|
fullName = mkOption { type = types.str; };
|
||||||
email = mkOption { type = types.str; };
|
email = mkOption { type = types.str; };
|
||||||
homeDirectory = mkOption {
|
homeDirectory = mkOption {
|
||||||
type = types.str;
|
type = types.str;
|
||||||
default =
|
default = let prefix = if isDarwin then "/Users" else "/home";
|
||||||
let prefix = if isDarwin then "/Users" else "/home";
|
in "${prefix}/${cfg.username}";
|
||||||
in "${prefix}/${cfg.username}";
|
|
||||||
};
|
};
|
||||||
nixConfigDirectory = mkOption {
|
nixConfigDirectory = mkOption {
|
||||||
type = types.str;
|
type = types.str;
|
||||||
|
|
|
@ -1,8 +1,6 @@
|
||||||
_final: prev: {
|
_final: prev: {
|
||||||
lib = prev.lib // {
|
lib = prev.lib // {
|
||||||
colors = {
|
colors = { tokyonight = import ./colors/tokyonight.nix; };
|
||||||
tokyonight = import ./colors/tokyonight.nix;
|
|
||||||
};
|
|
||||||
};
|
};
|
||||||
is-dark-mode = prev.writeShellScriptBin "is-dark-mode" ''
|
is-dark-mode = prev.writeShellScriptBin "is-dark-mode" ''
|
||||||
defaults read -g AppleInterfaceStyle &>/dev/null
|
defaults read -g AppleInterfaceStyle &>/dev/null
|
||||||
|
|
|
@ -5,7 +5,8 @@ stdenv.mkDerivation {
|
||||||
pname = "cinny";
|
pname = "cinny";
|
||||||
nativeBuildInputs = [ undmg unzip ];
|
nativeBuildInputs = [ undmg unzip ];
|
||||||
src = fetchurl {
|
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=";
|
sha256 = "sha256-m8sYA7YjvhqGFuU1L1y7BtndHGd6MpuH+hKzPSukxD0=";
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -1,17 +1,10 @@
|
||||||
{ stdenv
|
{ stdenv, lib, xcodeenv, dark-mode-notify-src, sdkVersion, ... }:
|
||||||
, lib
|
|
||||||
, xcodeenv
|
|
||||||
, dark-mode-notify-src
|
|
||||||
, sdkVersion
|
|
||||||
, ...
|
|
||||||
}:
|
|
||||||
let
|
let
|
||||||
xcode = xcodeenv.composeXcodeWrapper {
|
xcode = xcodeenv.composeXcodeWrapper {
|
||||||
version = sdkVersion;
|
version = sdkVersion;
|
||||||
xcodeBaseDir = "/Applications/Xcode.app";
|
xcodeBaseDir = "/Applications/Xcode.app";
|
||||||
};
|
};
|
||||||
in
|
in stdenv.mkDerivation {
|
||||||
stdenv.mkDerivation {
|
|
||||||
name = "dark-mode-notify";
|
name = "dark-mode-notify";
|
||||||
src = dark-mode-notify-src;
|
src = dark-mode-notify-src;
|
||||||
buildPhase = ''
|
buildPhase = ''
|
||||||
|
|
|
@ -1,5 +1,6 @@
|
||||||
{ inputs }:
|
{ inputs }:
|
||||||
_: prev: {
|
_: prev:
|
||||||
|
{
|
||||||
inherit (inputs) kitty-icon kitty-themes;
|
inherit (inputs) kitty-icon kitty-themes;
|
||||||
fishPlugins = prev.fishPlugins // {
|
fishPlugins = prev.fishPlugins // {
|
||||||
fisher = {
|
fisher = {
|
||||||
|
@ -8,16 +9,11 @@ _: prev: {
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
helix = inputs.helix.packages.${prev.stdenv.system}.default;
|
helix = inputs.helix.packages.${prev.stdenv.system}.default;
|
||||||
} // builtins.mapAttrs
|
} // builtins.mapAttrs (name: extras:
|
||||||
(name: extras:
|
prev.callPackage (./. + "/${name}.nix")
|
||||||
prev.callPackage
|
({ "${name}-src" = inputs."${name}-src"; } // extras)) {
|
||||||
(./. + "/${name}.nix")
|
|
||||||
({ "${name}-src" = inputs."${name}-src"; } // extras))
|
|
||||||
{
|
|
||||||
cinny = { };
|
cinny = { };
|
||||||
dark-mode-notify = {
|
dark-mode-notify = { sdkVersion = "14.*"; };
|
||||||
sdkVersion = "14.*";
|
|
||||||
};
|
|
||||||
ia-writer-family = { };
|
ia-writer-family = { };
|
||||||
yubiswitch = { };
|
yubiswitch = { };
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,9 +1,7 @@
|
||||||
{ ia-writer-family-src, lib, stdenv }:
|
{ ia-writer-family-src, lib, stdenv }:
|
||||||
|
|
||||||
let
|
let version = "20181224";
|
||||||
version = "20181224";
|
in stdenv.mkDerivation {
|
||||||
in
|
|
||||||
stdenv.mkDerivation {
|
|
||||||
name = "ia-writer-family-${version}";
|
name = "ia-writer-family-${version}";
|
||||||
|
|
||||||
src = ia-writer-family-src;
|
src = ia-writer-family-src;
|
||||||
|
|
|
@ -5,7 +5,8 @@ stdenv.mkDerivation {
|
||||||
pname = "yubiswitch";
|
pname = "yubiswitch";
|
||||||
nativeBuildInputs = [ undmg unzip ];
|
nativeBuildInputs = [ undmg unzip ];
|
||||||
src = fetchurl {
|
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=";
|
sha256 = "aR/3AXwAAhFYchfGCmqfNSs8uNnuLOCZ8B0JbXlKAf8=";
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
let
|
let
|
||||||
mkTemplates = builtins.mapAttrs (name: attrs: attrs // { path = ./. + "/${name}"; });
|
mkTemplates =
|
||||||
in
|
builtins.mapAttrs (name: attrs: attrs // { path = ./. + "/${name}"; });
|
||||||
mkTemplates {
|
in mkTemplates {
|
||||||
rust = {
|
rust = {
|
||||||
description = "A rust flake template based on flake.parts";
|
description = "A rust flake template based on flake.parts";
|
||||||
welcomeText = ''
|
welcomeText = ''
|
||||||
|
|
|
@ -13,21 +13,17 @@
|
||||||
outputs = inputs@{ self, flake-parts, crane, pre-commit, ... }:
|
outputs = inputs@{ self, flake-parts, crane, pre-commit, ... }:
|
||||||
flake-parts.lib.mkFlake { inherit inputs; } {
|
flake-parts.lib.mkFlake { inherit inputs; } {
|
||||||
imports = [ pre-commit.flakeModule ];
|
imports = [ pre-commit.flakeModule ];
|
||||||
systems = [
|
systems =
|
||||||
"aarch64-darwin"
|
[ "aarch64-darwin" "aarch64-linux" "x86_64-darwin" "x86_64-linux" ];
|
||||||
"aarch64-linux"
|
|
||||||
"x86_64-darwin"
|
|
||||||
"x86_64-linux"
|
|
||||||
];
|
|
||||||
perSystem = { config, pkgs, system, ... }:
|
perSystem = { config, pkgs, system, ... }:
|
||||||
let
|
let
|
||||||
crane-lib = crane.lib.${system};
|
crane-lib = crane.lib.${system};
|
||||||
package = crane-lib.buildPackage {
|
package = crane-lib.buildPackage {
|
||||||
src = crane-lib.cleanCargoSource ./.;
|
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 = {
|
pre-commit.settings.hooks = {
|
||||||
rustfmt.enable = true;
|
rustfmt.enable = true;
|
||||||
clippy.enable = true;
|
clippy.enable = true;
|
||||||
|
@ -42,19 +38,12 @@
|
||||||
'';
|
'';
|
||||||
inputsFrom = builtins.attrValues self.checks;
|
inputsFrom = builtins.attrValues self.checks;
|
||||||
|
|
||||||
RUST_SRC_PATH = "${pkgs.rust.packages.stable.rustPlatform.rustLibSrc}";
|
RUST_SRC_PATH =
|
||||||
nativeBuildInputs = builtins.attrValues {
|
"${pkgs.rust.packages.stable.rustPlatform.rustLibSrc}";
|
||||||
inherit (pkgs)
|
nativeBuildInputs =
|
||||||
cargo
|
builtins.attrValues { inherit (pkgs) cargo rustc; };
|
||||||
rustc
|
|
||||||
;
|
|
||||||
};
|
|
||||||
buildInputs = builtins.attrValues {
|
buildInputs = builtins.attrValues {
|
||||||
inherit (pkgs)
|
inherit (pkgs) rust-analyzer rustfmt clippy;
|
||||||
rust-analyzer
|
|
||||||
rustfmt
|
|
||||||
clippy
|
|
||||||
;
|
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
Loading…
Reference in New Issue