mirror of
https://github.com/kittywitch/nixfiles.git
synced 2026-02-09 12:29:19 -08:00
refactor: statix, deadnix, alejandra
This commit is contained in:
parent
961ec369ba
commit
53eed4454d
57 changed files with 1296 additions and 963 deletions
1
.envrc
1
.envrc
|
|
@ -1 +1,2 @@
|
||||||
|
export REPO_ROOT="$(pwd)"
|
||||||
use flake
|
use flake
|
||||||
|
|
|
||||||
1
.gitignore
vendored
1
.gitignore
vendored
|
|
@ -1 +1,2 @@
|
||||||
result
|
result
|
||||||
|
.direnv/
|
||||||
|
|
|
||||||
8
darwin/base/docs.nix
Normal file
8
darwin/base/docs.nix
Normal file
|
|
@ -0,0 +1,8 @@
|
||||||
|
_: {
|
||||||
|
documentation = {
|
||||||
|
enable = false;
|
||||||
|
man.enable = false;
|
||||||
|
info.enable = false;
|
||||||
|
doc.enable = false;
|
||||||
|
};
|
||||||
|
}
|
||||||
5
darwin/base/fonts.nix
Normal file
5
darwin/base/fonts.nix
Normal file
|
|
@ -0,0 +1,5 @@
|
||||||
|
_: {
|
||||||
|
fonts = {
|
||||||
|
fontDir.enable = true;
|
||||||
|
};
|
||||||
|
}
|
||||||
6
darwin/base/gpg.nix
Normal file
6
darwin/base/gpg.nix
Normal file
|
|
@ -0,0 +1,6 @@
|
||||||
|
_: {
|
||||||
|
programs.gnupg.agent = {
|
||||||
|
enable = true;
|
||||||
|
enableSSHSupport = true;
|
||||||
|
};
|
||||||
|
}
|
||||||
12
darwin/base/homebrew.nix
Normal file
12
darwin/base/homebrew.nix
Normal file
|
|
@ -0,0 +1,12 @@
|
||||||
|
_: {
|
||||||
|
homebrew = {
|
||||||
|
enable = true;
|
||||||
|
onActivation = {
|
||||||
|
upgrade = true;
|
||||||
|
cleanup = "zap";
|
||||||
|
};
|
||||||
|
brews = [
|
||||||
|
"mas"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
}
|
||||||
8
darwin/base/nix.nix
Normal file
8
darwin/base/nix.nix
Normal file
|
|
@ -0,0 +1,8 @@
|
||||||
|
_: {
|
||||||
|
services.nix-daemon.enable = true;
|
||||||
|
nix = {
|
||||||
|
extraOptions = ''
|
||||||
|
extra-platforms = x86_64-darwin aarch64-darwin
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
}
|
||||||
5
darwin/base/shell.nix
Normal file
5
darwin/base/shell.nix
Normal file
|
|
@ -0,0 +1,5 @@
|
||||||
|
_: {
|
||||||
|
programs.zsh = {
|
||||||
|
enable = true;
|
||||||
|
};
|
||||||
|
}
|
||||||
42
darwin/base/system.nix
Normal file
42
darwin/base/system.nix
Normal file
|
|
@ -0,0 +1,42 @@
|
||||||
|
_: {
|
||||||
|
services.activate-system.enable = true;
|
||||||
|
system = {
|
||||||
|
defaults = {
|
||||||
|
SoftwareUpdate.AutomaticallyInstallMacOSUpdates = true;
|
||||||
|
NSGlobalDomain = {
|
||||||
|
AppleInterfaceStyleSwitchesAutomatically = true;
|
||||||
|
AppleShowAllFiles = true;
|
||||||
|
AppleShowAllExtensions = true;
|
||||||
|
};
|
||||||
|
dock = {
|
||||||
|
autohide = true;
|
||||||
|
orientation = "left";
|
||||||
|
tilesize = 32;
|
||||||
|
wvous-tl-corner = 1;
|
||||||
|
wvous-tr-corner = 10;
|
||||||
|
wvous-bl-corner = 4;
|
||||||
|
wvous-br-corner = 14;
|
||||||
|
};
|
||||||
|
finder = {
|
||||||
|
CreateDesktop = false;
|
||||||
|
ShowPathbar = true;
|
||||||
|
ShowStatusBar = true;
|
||||||
|
AppleShowAllFiles = true;
|
||||||
|
AppleShowAllExtensions = true;
|
||||||
|
};
|
||||||
|
loginwindow = {
|
||||||
|
GuestEnabled = false;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
keyboard = {
|
||||||
|
enableKeyMapping = true;
|
||||||
|
remapCapsLockToControl = true;
|
||||||
|
userKeyMapping = [
|
||||||
|
{
|
||||||
|
HIDKeyboardModifierMappingSrc = 30064771129;
|
||||||
|
HIDKeyboardModifierMappingDst = 30064771299;
|
||||||
|
}
|
||||||
|
];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
7
darwin/home.nix
Normal file
7
darwin/home.nix
Normal file
|
|
@ -0,0 +1,7 @@
|
||||||
|
{config, ...}: {
|
||||||
|
services.gpg-agent.pinentryFlavor = null;
|
||||||
|
|
||||||
|
home.file."${config.programs.gpg.homedir}/gpg-agent.conf".text = ''
|
||||||
|
pinentry-program /opt/homebrew/bin/pinentry-mac
|
||||||
|
'';
|
||||||
|
}
|
||||||
14
darwin/kat.nix
Normal file
14
darwin/kat.nix
Normal file
|
|
@ -0,0 +1,14 @@
|
||||||
|
{pkgs, ...}: {
|
||||||
|
users.users.kat = {
|
||||||
|
name = "kat";
|
||||||
|
home = "/Users/kat";
|
||||||
|
shell = pkgs.zsh;
|
||||||
|
uid = 501;
|
||||||
|
};
|
||||||
|
users.knownUsers = [
|
||||||
|
"kat"
|
||||||
|
];
|
||||||
|
home-manager.users.kat.programs.zsh.initExtraFirst = ''
|
||||||
|
source /etc/static/zshrc
|
||||||
|
'';
|
||||||
|
}
|
||||||
|
|
@ -1,18 +1,24 @@
|
||||||
{ pkgs, lib, ... }:
|
|
||||||
|
|
||||||
{
|
{
|
||||||
|
pkgs,
|
||||||
|
lib,
|
||||||
|
...
|
||||||
|
}: {
|
||||||
base16 = {
|
base16 = {
|
||||||
vim.enable = false;
|
vim.enable = false;
|
||||||
vim.template = data: let
|
vim.template = data: let
|
||||||
drv = pkgs.base16-templates.vim.withTemplateData data;
|
drv = pkgs.base16-templates.vim.withTemplateData data;
|
||||||
in drv.overrideAttrs (old: {
|
in
|
||||||
|
drv.overrideAttrs (old: {
|
||||||
src = pkgs.fetchFromGitHub {
|
src = pkgs.fetchFromGitHub {
|
||||||
repo = "base16-vim";
|
repo = "base16-vim";
|
||||||
owner = "fnune";
|
owner = "fnune";
|
||||||
rev = "52e4ce93a6234d112bc88e1ad25458904ffafe61";
|
rev = "52e4ce93a6234d112bc88e1ad25458904ffafe61";
|
||||||
sha256 = "10y8z0ycmdjk47dpxf6r2pc85k0y19a29aww99vgnxp31wrkc17h";
|
sha256 = "10y8z0ycmdjk47dpxf6r2pc85k0y19a29aww99vgnxp31wrkc17h";
|
||||||
};
|
};
|
||||||
patches = old.patches or [ ] ++ [
|
patches =
|
||||||
|
old.patches
|
||||||
|
or []
|
||||||
|
++ [
|
||||||
(pkgs.fetchurl {
|
(pkgs.fetchurl {
|
||||||
# base16background=none
|
# base16background=none
|
||||||
url = "https://github.com/arcnmx/base16-vim/commit/fe16eaaa1de83b649e6867c61494276c1f35c3c3.patch";
|
url = "https://github.com/arcnmx/base16-vim/commit/fe16eaaa1de83b649e6867c61494276c1f35c3c3.patch";
|
||||||
|
|
|
||||||
|
|
@ -1,7 +0,0 @@
|
||||||
_: {
|
|
||||||
home = {
|
|
||||||
username = "kat";
|
|
||||||
stateVersion = "22.11";
|
|
||||||
homeDirectory = "/home/kat";
|
|
||||||
};
|
|
||||||
}
|
|
||||||
17
home/default.nix
Normal file
17
home/default.nix
Normal file
|
|
@ -0,0 +1,17 @@
|
||||||
|
{tree, ...}:
|
||||||
|
tree.prev
|
||||||
|
// {
|
||||||
|
base = {
|
||||||
|
imports = with tree.prev; [
|
||||||
|
base16
|
||||||
|
shell
|
||||||
|
neovim
|
||||||
|
];
|
||||||
|
};
|
||||||
|
work = {
|
||||||
|
imports = with tree.prev; [
|
||||||
|
work
|
||||||
|
wezterm
|
||||||
|
];
|
||||||
|
};
|
||||||
|
}
|
||||||
16
home/gpg.nix
Normal file
16
home/gpg.nix
Normal file
|
|
@ -0,0 +1,16 @@
|
||||||
|
{lib, ...}: let
|
||||||
|
inherit (lib.modules) mkMerge;
|
||||||
|
in {
|
||||||
|
services.gpg-agent = {
|
||||||
|
enable = true;
|
||||||
|
enableExtraSocket = true;
|
||||||
|
enableSshSupport = false;
|
||||||
|
extraConfig = mkMerge [
|
||||||
|
"auto-expand-secmem 0x30000" # otherwise "gpg: public key decryption failed: Cannot allocate memory"
|
||||||
|
"pinentry-timeout 30"
|
||||||
|
"allow-loopback-pinentry"
|
||||||
|
"enable-ssh-support"
|
||||||
|
"no-allow-external-cache"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
}
|
||||||
1
home/modules/blank.nix
Normal file
1
home/modules/blank.nix
Normal file
|
|
@ -0,0 +1 @@
|
||||||
|
_: {}
|
||||||
3
home/modules/disable.nix
Normal file
3
home/modules/disable.nix
Normal file
|
|
@ -0,0 +1,3 @@
|
||||||
|
{modulesPath, ...}: {
|
||||||
|
disabledModules = map (x: /. + "${toString modulesPath}/${x}") ["programs/neovim.nix"];
|
||||||
|
}
|
||||||
437
home/modules/neovim.nix
Normal file
437
home/modules/neovim.nix
Normal file
|
|
@ -0,0 +1,437 @@
|
||||||
|
{
|
||||||
|
config,
|
||||||
|
lib,
|
||||||
|
pkgs,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
with lib; let
|
||||||
|
cfg = config.programs.neovim;
|
||||||
|
|
||||||
|
jsonFormat = pkgs.formats.json {};
|
||||||
|
|
||||||
|
extraPython3PackageType = mkOptionType {
|
||||||
|
name = "extra-python3-packages";
|
||||||
|
description = "python3 packages in python.withPackages format";
|
||||||
|
check = with types; (x:
|
||||||
|
if isFunction x
|
||||||
|
then isList (x pkgs.python3Packages)
|
||||||
|
else false);
|
||||||
|
merge = mergeOneOption;
|
||||||
|
};
|
||||||
|
|
||||||
|
# Currently, upstream Neovim is pinned on Lua 5.1 for LuaJIT support.
|
||||||
|
# This will need to be updated if Neovim ever migrates to a newer
|
||||||
|
# version of Lua.
|
||||||
|
extraLua51PackageType = mkOptionType {
|
||||||
|
name = "extra-lua51-packages";
|
||||||
|
description = "lua5.1 packages in lua5_1.withPackages format";
|
||||||
|
check = with types; (x:
|
||||||
|
if isFunction x
|
||||||
|
then isList (x pkgs.lua51Packages)
|
||||||
|
else false);
|
||||||
|
merge = mergeOneOption;
|
||||||
|
};
|
||||||
|
|
||||||
|
pluginWithConfigType = types.submodule {
|
||||||
|
options = {
|
||||||
|
config = mkOption {
|
||||||
|
type = types.lines;
|
||||||
|
description = "Script to configure this plugin. The scripting language should match type.";
|
||||||
|
default = "";
|
||||||
|
};
|
||||||
|
|
||||||
|
type = mkOption {
|
||||||
|
type =
|
||||||
|
types.either (types.enum ["lua" "viml" "teal" "fennel"]) types.str;
|
||||||
|
description = "Language used in config. Configurations are aggregated per-language.";
|
||||||
|
default = "viml";
|
||||||
|
};
|
||||||
|
|
||||||
|
optional =
|
||||||
|
mkEnableOption "optional"
|
||||||
|
// {
|
||||||
|
description = "Don't load by default (load with :packadd)";
|
||||||
|
};
|
||||||
|
|
||||||
|
plugin = mkOption {
|
||||||
|
type = types.package;
|
||||||
|
description = "vim plugin";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
# A function to get the configuration string (if any) from an element of 'plugins'
|
||||||
|
pluginConfig = p:
|
||||||
|
if p ? plugin && (p.config or "") != ""
|
||||||
|
then ''
|
||||||
|
" ${p.plugin.pname or p.plugin.name} {{{
|
||||||
|
${p.config}
|
||||||
|
" }}}
|
||||||
|
''
|
||||||
|
else "";
|
||||||
|
|
||||||
|
allPlugins =
|
||||||
|
cfg.plugins
|
||||||
|
++ optional cfg.coc.enable {
|
||||||
|
type = "viml";
|
||||||
|
plugin = cfg.coc.package;
|
||||||
|
config = cfg.coc.pluginConfig;
|
||||||
|
optional = false;
|
||||||
|
};
|
||||||
|
|
||||||
|
moduleConfigure = {
|
||||||
|
packages.home-manager = {
|
||||||
|
start = remove null (map
|
||||||
|
(x:
|
||||||
|
if x ? plugin && x.optional
|
||||||
|
then null
|
||||||
|
else (x.plugin or x))
|
||||||
|
allPlugins);
|
||||||
|
opt =
|
||||||
|
remove null
|
||||||
|
(map (x:
|
||||||
|
if x ? plugin && x.optional
|
||||||
|
then x.plugin
|
||||||
|
else null)
|
||||||
|
allPlugins);
|
||||||
|
};
|
||||||
|
beforePlugins = "";
|
||||||
|
};
|
||||||
|
|
||||||
|
extraMakeWrapperArgs =
|
||||||
|
lib.optionalString (cfg.extraPackages != [])
|
||||||
|
''--suffix PATH : "${lib.makeBinPath cfg.extraPackages}"'';
|
||||||
|
extraMakeWrapperLuaCArgs = lib.optionalString (cfg.extraLuaPackages != []) ''
|
||||||
|
--suffix LUA_CPATH ";" "${
|
||||||
|
lib.concatMapStringsSep ";" pkgs.lua51Packages.getLuaCPath
|
||||||
|
cfg.extraLuaPackages
|
||||||
|
}"'';
|
||||||
|
extraMakeWrapperLuaArgs = lib.optionalString (cfg.extraLuaPackages != []) ''
|
||||||
|
--suffix LUA_PATH ";" "${
|
||||||
|
lib.concatMapStringsSep ";" pkgs.lua51Packages.getLuaPath
|
||||||
|
cfg.extraLuaPackages
|
||||||
|
}"'';
|
||||||
|
in {
|
||||||
|
imports = [
|
||||||
|
(mkRemovedOptionModule ["programs" "neovim" "withPython"]
|
||||||
|
"Python2 support has been removed from neovim.")
|
||||||
|
(mkRemovedOptionModule ["programs" "neovim" "extraPythonPackages"]
|
||||||
|
"Python2 support has been removed from neovim.")
|
||||||
|
];
|
||||||
|
|
||||||
|
options = {
|
||||||
|
programs.neovim = {
|
||||||
|
enable = mkEnableOption "Neovim";
|
||||||
|
|
||||||
|
viAlias = mkOption {
|
||||||
|
type = types.bool;
|
||||||
|
default = false;
|
||||||
|
description = ''
|
||||||
|
Symlink <command>vi</command> to <command>nvim</command> binary.
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
|
||||||
|
vimAlias = mkOption {
|
||||||
|
type = types.bool;
|
||||||
|
default = false;
|
||||||
|
description = ''
|
||||||
|
Symlink <command>vim</command> to <command>nvim</command> binary.
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
|
||||||
|
vimdiffAlias = mkOption {
|
||||||
|
type = types.bool;
|
||||||
|
default = false;
|
||||||
|
description = ''
|
||||||
|
Alias <command>vimdiff</command> to <command>nvim -d</command>.
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
|
||||||
|
withNodeJs = mkOption {
|
||||||
|
type = types.bool;
|
||||||
|
default = false;
|
||||||
|
description = ''
|
||||||
|
Enable node provider. Set to <literal>true</literal> to
|
||||||
|
use Node plugins.
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
|
||||||
|
withRuby = mkOption {
|
||||||
|
type = types.nullOr types.bool;
|
||||||
|
default = true;
|
||||||
|
description = ''
|
||||||
|
Enable ruby provider.
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
|
||||||
|
withPython3 = mkOption {
|
||||||
|
type = types.bool;
|
||||||
|
default = true;
|
||||||
|
description = ''
|
||||||
|
Enable Python 3 provider. Set to <literal>true</literal> to
|
||||||
|
use Python 3 plugins.
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
generatedConfigViml = mkOption {
|
||||||
|
type = types.unspecified;
|
||||||
|
visible = true;
|
||||||
|
readOnly = true;
|
||||||
|
description = ''
|
||||||
|
Generated vimscript config.
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
extraPython3Packages = mkOption {
|
||||||
|
type = with types; either extraPython3PackageType (listOf package);
|
||||||
|
default = _: [];
|
||||||
|
defaultText = literalExpression "ps: [ ]";
|
||||||
|
example = literalExpression "(ps: with ps; [ python-language-server ])";
|
||||||
|
description = ''
|
||||||
|
A function in python.withPackages format, which returns a
|
||||||
|
list of Python 3 packages required for your plugins to work.
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
|
||||||
|
extraLuaPackages = mkOption {
|
||||||
|
type = with types; either extraLua51PackageType (listOf package);
|
||||||
|
default = [];
|
||||||
|
defaultText = literalExpression "[ ]";
|
||||||
|
example = literalExpression "(ps: with ps; [ luautf8 ])";
|
||||||
|
description = ''
|
||||||
|
A function in lua5_1.withPackages format, which returns a
|
||||||
|
list of Lua packages required for your plugins to work.
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
|
||||||
|
generatedConfigs = mkOption {
|
||||||
|
type = types.attrsOf types.lines;
|
||||||
|
visible = true;
|
||||||
|
readOnly = true;
|
||||||
|
example = literalExpression ''
|
||||||
|
{
|
||||||
|
viml = '''
|
||||||
|
" Generated by home-manager
|
||||||
|
set packpath^=/nix/store/cn8vvv4ymxjf8cfzg7db15b2838nqqib-vim-pack-dir
|
||||||
|
set runtimepath^=/nix/store/cn8vvv4ymxjf8cfzg7db15b2838nqqib-vim-pack-dir
|
||||||
|
''';
|
||||||
|
|
||||||
|
lua = '''
|
||||||
|
-- Generated by home-manager
|
||||||
|
vim.opt.background = "dark"
|
||||||
|
''';
|
||||||
|
}'';
|
||||||
|
description = ''
|
||||||
|
Generated configurations with as key their language (set via type).
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
|
||||||
|
package = mkOption {
|
||||||
|
type = types.package;
|
||||||
|
default = pkgs.neovim-unwrapped;
|
||||||
|
defaultText = literalExpression "pkgs.neovim-unwrapped";
|
||||||
|
description = "The package to use for the neovim binary.";
|
||||||
|
};
|
||||||
|
|
||||||
|
finalPackage = mkOption {
|
||||||
|
type = types.package;
|
||||||
|
visible = false;
|
||||||
|
readOnly = true;
|
||||||
|
description = "Resulting customized neovim package.";
|
||||||
|
};
|
||||||
|
|
||||||
|
configure = mkOption {
|
||||||
|
type = types.attrsOf types.anything;
|
||||||
|
default = {};
|
||||||
|
example = literalExpression ''
|
||||||
|
configure = {
|
||||||
|
customRC = $''''
|
||||||
|
" here your custom configuration goes!
|
||||||
|
$'''';
|
||||||
|
packages.myVimPackage = with pkgs.vimPlugins; {
|
||||||
|
# loaded on launch
|
||||||
|
start = [ fugitive ];
|
||||||
|
# manually loadable by calling `:packadd $plugin-name`
|
||||||
|
opt = [ ];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
'';
|
||||||
|
description = ''
|
||||||
|
Deprecated. Please use the other options.
|
||||||
|
|
||||||
|
Generate your init file from your list of plugins and custom commands,
|
||||||
|
and loads it from the store via <command>nvim -u /nix/store/hash-vimrc</command>
|
||||||
|
|
||||||
|
</para><para>
|
||||||
|
|
||||||
|
This option is mutually exclusive with <varname>extraConfig</varname>
|
||||||
|
and <varname>plugins</varname>.
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
|
||||||
|
extraConfig = mkOption {
|
||||||
|
type = types.lines;
|
||||||
|
default = "";
|
||||||
|
example = ''
|
||||||
|
set nocompatible
|
||||||
|
set nobackup
|
||||||
|
'';
|
||||||
|
description = ''
|
||||||
|
Custom vimrc lines.
|
||||||
|
|
||||||
|
</para><para>
|
||||||
|
|
||||||
|
This option is mutually exclusive with <varname>configure</varname>.
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
|
||||||
|
extraPackages = mkOption {
|
||||||
|
type = with types; listOf package;
|
||||||
|
default = [];
|
||||||
|
example = literalExpression "[ pkgs.shfmt ]";
|
||||||
|
description = "Extra packages available to nvim.";
|
||||||
|
};
|
||||||
|
|
||||||
|
plugins = mkOption {
|
||||||
|
type = with types; listOf (either package pluginWithConfigType);
|
||||||
|
default = [];
|
||||||
|
example = literalExpression ''
|
||||||
|
with pkgs.vimPlugins; [
|
||||||
|
yankring
|
||||||
|
vim-nix
|
||||||
|
{ plugin = vim-startify;
|
||||||
|
config = "let g:startify_change_to_vcs_root = 0";
|
||||||
|
}
|
||||||
|
]
|
||||||
|
'';
|
||||||
|
description = ''
|
||||||
|
List of vim plugins to install optionally associated with
|
||||||
|
configuration to be placed in init.vim.
|
||||||
|
|
||||||
|
</para><para>
|
||||||
|
|
||||||
|
This option is mutually exclusive with <varname>configure</varname>.
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
|
||||||
|
coc = {
|
||||||
|
enable = mkEnableOption "Coc";
|
||||||
|
|
||||||
|
package = mkOption {
|
||||||
|
type = types.package;
|
||||||
|
default = pkgs.vimPlugins.coc-nvim;
|
||||||
|
defaultText = literalExpression "pkgs.vimPlugins.coc-nvim";
|
||||||
|
description = "The package to use for the CoC plugin.";
|
||||||
|
};
|
||||||
|
|
||||||
|
settings = mkOption {
|
||||||
|
inherit (jsonFormat) type;
|
||||||
|
default = {};
|
||||||
|
example = literalExpression ''
|
||||||
|
{
|
||||||
|
"suggest.noselect" = true;
|
||||||
|
"suggest.enablePreview" = true;
|
||||||
|
"suggest.enablePreselect" = false;
|
||||||
|
"suggest.disableKind" = true;
|
||||||
|
languageserver = {
|
||||||
|
haskell = {
|
||||||
|
command = "haskell-language-server-wrapper";
|
||||||
|
args = [ "--lsp" ];
|
||||||
|
rootPatterns = [
|
||||||
|
"*.cabal"
|
||||||
|
"stack.yaml"
|
||||||
|
"cabal.project"
|
||||||
|
"package.yaml"
|
||||||
|
"hie.yaml"
|
||||||
|
];
|
||||||
|
filetypes = [ "haskell" "lhaskell" ];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
'';
|
||||||
|
description = ''
|
||||||
|
Extra configuration lines to add to
|
||||||
|
<filename>$XDG_CONFIG_HOME/nvim/coc-settings.json</filename>
|
||||||
|
See
|
||||||
|
<link xlink:href="https://github.com/neoclide/coc.nvim/wiki/Using-the-configuration-file" />
|
||||||
|
for options.
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
|
||||||
|
pluginConfig = mkOption {
|
||||||
|
type = types.lines;
|
||||||
|
default = "";
|
||||||
|
description = "Script to configure CoC. Must be viml.";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
config = let
|
||||||
|
# transform all plugins into an attrset
|
||||||
|
pluginsNormalized = map (x:
|
||||||
|
if (x ? plugin)
|
||||||
|
then x
|
||||||
|
else {
|
||||||
|
type = x.type or "viml";
|
||||||
|
plugin = x;
|
||||||
|
config = "";
|
||||||
|
optional = false;
|
||||||
|
})
|
||||||
|
allPlugins;
|
||||||
|
suppressNotVimlConfig = p:
|
||||||
|
if p.type != "viml"
|
||||||
|
then p // {config = "";}
|
||||||
|
else p;
|
||||||
|
|
||||||
|
neovimConfig = pkgs.neovimUtils.makeNeovimConfig {
|
||||||
|
inherit (cfg) extraPython3Packages withPython3 withRuby viAlias vimAlias;
|
||||||
|
withNodeJs = cfg.withNodeJs || cfg.coc.enable;
|
||||||
|
configure = cfg.configure // moduleConfigure;
|
||||||
|
plugins = map suppressNotVimlConfig pluginsNormalized;
|
||||||
|
customRC = cfg.extraConfig;
|
||||||
|
};
|
||||||
|
in
|
||||||
|
mkIf cfg.enable {
|
||||||
|
warnings = optional (cfg.configure != {}) ''
|
||||||
|
programs.neovim.configure is deprecated.
|
||||||
|
Other programs.neovim options can override its settings or ignore them.
|
||||||
|
Please use the other options at your disposal:
|
||||||
|
configure.packages.*.opt -> programs.neovim.plugins = [ { plugin = ...; optional = true; }]
|
||||||
|
configure.packages.*.start -> programs.neovim.plugins = [ { plugin = ...; }]
|
||||||
|
configure.customRC -> programs.neovim.extraConfig
|
||||||
|
'';
|
||||||
|
programs.neovim.generatedConfigViml = neovimConfig;
|
||||||
|
programs.neovim.generatedConfigs = let
|
||||||
|
grouped = builtins.groupBy (x: x.type) pluginsNormalized;
|
||||||
|
concatConfigs = lib.concatMapStrings (p: p.config);
|
||||||
|
in
|
||||||
|
mapAttrs (_: concatConfigs) grouped;
|
||||||
|
|
||||||
|
home.packages = [cfg.finalPackage];
|
||||||
|
|
||||||
|
xdg.configFile."nvim/lua/init-home-manager.lua" = mkIf (hasAttr "lua" config.programs.neovim.generatedConfigs) {
|
||||||
|
text = config.programs.neovim.generatedConfigs.lua;
|
||||||
|
};
|
||||||
|
xdg.configFile."nvim/coc-settings.json" = mkIf cfg.coc.enable {
|
||||||
|
source = jsonFormat.generate "coc-settings.json" cfg.coc.settings;
|
||||||
|
};
|
||||||
|
|
||||||
|
programs.neovim.finalPackage =
|
||||||
|
pkgs.wrapNeovimUnstable cfg.package
|
||||||
|
(neovimConfig
|
||||||
|
// {
|
||||||
|
wrapperArgs =
|
||||||
|
(lib.escapeShellArgs neovimConfig.wrapperArgs)
|
||||||
|
+ " "
|
||||||
|
+ extraMakeWrapperArgs
|
||||||
|
+ " "
|
||||||
|
+ extraMakeWrapperLuaCArgs
|
||||||
|
+ " "
|
||||||
|
+ extraMakeWrapperLuaArgs;
|
||||||
|
wrapRc = false;
|
||||||
|
});
|
||||||
|
|
||||||
|
programs.bash.shellAliases = mkIf cfg.vimdiffAlias {vimdiff = "nvim -d";};
|
||||||
|
programs.fish.shellAliases = mkIf cfg.vimdiffAlias {vimdiff = "nvim -d";};
|
||||||
|
programs.zsh.shellAliases = mkIf cfg.vimdiffAlias {vimdiff = "nvim -d";};
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
@ -1,93 +0,0 @@
|
||||||
{
|
|
||||||
config,
|
|
||||||
lib,
|
|
||||||
pkgs,
|
|
||||||
...
|
|
||||||
}: let
|
|
||||||
inherit (lib.modules) mkIf;
|
|
||||||
inherit (lib.strings) fixedWidthNumber hasInfix;
|
|
||||||
inherit (lib.attrsets) mapAttrs filterAttrs;
|
|
||||||
packDir = builtins.toString (pkgs.vimUtils.packDir config.programs.neovim.generatedConfigViml.configure.packages);
|
|
||||||
initLua = pkgs.substituteAll ({
|
|
||||||
name = "init.lua";
|
|
||||||
src = ./init.lua;
|
|
||||||
inherit packDir;
|
|
||||||
base16ShellPath = config.base16.shell.package;
|
|
||||||
inherit (config.base16) defaultSchemeName;
|
|
||||||
defaultSchemeSlug = config.base16.defaultScheme.slug;
|
|
||||||
}
|
|
||||||
// mapAttrs (_: col: fixedWidthNumber 2 col.ansiIndex)
|
|
||||||
(filterAttrs (var: _: hasInfix "base" var) config.base16.defaultScheme));
|
|
||||||
in
|
|
||||||
mkIf config.programs.neovim.enable {
|
|
||||||
home.sessionVariables.EDITOR = "nvim";
|
|
||||||
|
|
||||||
programs.neovim = {
|
|
||||||
vimAlias = true;
|
|
||||||
viAlias = true;
|
|
||||||
plugins = with pkgs.vimPlugins; [
|
|
||||||
# Libraries
|
|
||||||
plenary-nvim
|
|
||||||
# Disables and re-enables highlighting when searching
|
|
||||||
vim-cool
|
|
||||||
# Colour highlighting
|
|
||||||
vim-hexokinase
|
|
||||||
# Git porcelain
|
|
||||||
vim-fugitive
|
|
||||||
# Start screen
|
|
||||||
vim-startify
|
|
||||||
# Re-open with cursor at the same place
|
|
||||||
vim-lastplace
|
|
||||||
# Status Bar
|
|
||||||
lualine-nvim
|
|
||||||
# EasyMotion Equivalent
|
|
||||||
hop-nvim
|
|
||||||
# base16
|
|
||||||
config.base16.vim.plugin
|
|
||||||
# Fonts
|
|
||||||
nvim-web-devicons
|
|
||||||
# Completion
|
|
||||||
nvim-cmp
|
|
||||||
# Fuzzy Finder
|
|
||||||
telescope-nvim
|
|
||||||
# Buffers
|
|
||||||
bufferline-nvim
|
|
||||||
# Language Server
|
|
||||||
nvim-lspconfig
|
|
||||||
(pkgs.vimPlugins.nvim-treesitter.withPlugins (_:
|
|
||||||
with pkgs.tree-sitter-grammars; [
|
|
||||||
tree-sitter-c
|
|
||||||
tree-sitter-lua
|
|
||||||
tree-sitter-rust
|
|
||||||
#tree-sitter-bash
|
|
||||||
tree-sitter-css
|
|
||||||
tree-sitter-dockerfile
|
|
||||||
tree-sitter-go
|
|
||||||
tree-sitter-hcl
|
|
||||||
tree-sitter-html
|
|
||||||
tree-sitter-javascript
|
|
||||||
tree-sitter-markdown
|
|
||||||
tree-sitter-nix
|
|
||||||
tree-sitter-norg
|
|
||||||
tree-sitter-python
|
|
||||||
tree-sitter-regex
|
|
||||||
tree-sitter-scss
|
|
||||||
]))
|
|
||||||
# Treesitter Plugins
|
|
||||||
nvim-ts-rainbow
|
|
||||||
nvim-treesitter-context
|
|
||||||
twilight-nvim
|
|
||||||
];
|
|
||||||
extraPackages = with pkgs; [
|
|
||||||
# For nvim-lspconfig, Terraform Language Server
|
|
||||||
terraform-ls
|
|
||||||
# For tree-sitter
|
|
||||||
tree-sitter
|
|
||||||
nodejs
|
|
||||||
clang
|
|
||||||
clangStdenv.cc
|
|
||||||
];
|
|
||||||
};
|
|
||||||
|
|
||||||
xdg.configFile."nvim/init.lua".source = initLua;
|
|
||||||
}
|
|
||||||
|
|
@ -1,18 +0,0 @@
|
||||||
{
|
|
||||||
config,
|
|
||||||
lib,
|
|
||||||
pkgs,
|
|
||||||
...
|
|
||||||
}: let
|
|
||||||
inherit (lib.modules) mkIf;
|
|
||||||
inherit (lib.options) mkEnableOption;
|
|
||||||
in {
|
|
||||||
options.programs.wezterm = {
|
|
||||||
enable = mkEnableOption "the wezterm terminal emulator";
|
|
||||||
};
|
|
||||||
config = mkIf config.programs.wezterm.enable {
|
|
||||||
home.packages = [
|
|
||||||
pkgs.wezterm
|
|
||||||
];
|
|
||||||
};
|
|
||||||
}
|
|
||||||
94
home/neovim/default.nix
Normal file
94
home/neovim/default.nix
Normal file
|
|
@ -0,0 +1,94 @@
|
||||||
|
{
|
||||||
|
config,
|
||||||
|
lib,
|
||||||
|
pkgs,
|
||||||
|
...
|
||||||
|
}: let
|
||||||
|
inherit (lib.modules) mkIf;
|
||||||
|
inherit (lib.strings) fixedWidthNumber hasInfix;
|
||||||
|
inherit (lib.attrsets) mapAttrs filterAttrs;
|
||||||
|
packDir = builtins.toString (pkgs.vimUtils.packDir config.programs.neovim.generatedConfigViml.configure.packages);
|
||||||
|
initLua = pkgs.substituteAll ({
|
||||||
|
name = "init.lua";
|
||||||
|
src = ./init.lua;
|
||||||
|
inherit packDir;
|
||||||
|
base16ShellPath = config.base16.shell.package;
|
||||||
|
inherit (config.base16) defaultSchemeName;
|
||||||
|
defaultSchemeSlug = config.base16.defaultScheme.slug;
|
||||||
|
}
|
||||||
|
// mapAttrs (_: col: fixedWidthNumber 2 col.ansiIndex)
|
||||||
|
(filterAttrs (var: _: hasInfix "base" var) config.base16.defaultScheme));
|
||||||
|
in {
|
||||||
|
home.sessionVariables = mkIf config.programs.neovim.enable {EDITOR = "nvim";};
|
||||||
|
|
||||||
|
programs.neovim = {
|
||||||
|
enable = true;
|
||||||
|
vimAlias = true;
|
||||||
|
viAlias = true;
|
||||||
|
plugins = with pkgs.vimPlugins; [
|
||||||
|
# Libraries
|
||||||
|
plenary-nvim
|
||||||
|
# Disables and re-enables highlighting when searching
|
||||||
|
vim-cool
|
||||||
|
# Colour highlighting
|
||||||
|
vim-hexokinase
|
||||||
|
# Git porcelain
|
||||||
|
vim-fugitive
|
||||||
|
# Start screen
|
||||||
|
vim-startify
|
||||||
|
# Re-open with cursor at the same place
|
||||||
|
vim-lastplace
|
||||||
|
# Status Bar
|
||||||
|
lualine-nvim
|
||||||
|
# EasyMotion Equivalent
|
||||||
|
hop-nvim
|
||||||
|
# org-mode for vim
|
||||||
|
# neorg
|
||||||
|
# base16
|
||||||
|
config.base16.vim.plugin
|
||||||
|
# Fonts
|
||||||
|
nvim-web-devicons
|
||||||
|
# Completion
|
||||||
|
nvim-cmp
|
||||||
|
# Fuzzy Finder
|
||||||
|
telescope-nvim
|
||||||
|
# Buffers
|
||||||
|
bufferline-nvim
|
||||||
|
# Language Server
|
||||||
|
nvim-lspconfig
|
||||||
|
(pkgs.vimPlugins.nvim-treesitter.withPlugins (_:
|
||||||
|
with pkgs.tree-sitter-grammars; [
|
||||||
|
tree-sitter-c
|
||||||
|
tree-sitter-lua
|
||||||
|
tree-sitter-rust
|
||||||
|
#tree-sitter-bash
|
||||||
|
tree-sitter-css
|
||||||
|
tree-sitter-dockerfile
|
||||||
|
tree-sitter-go
|
||||||
|
tree-sitter-hcl
|
||||||
|
tree-sitter-html
|
||||||
|
tree-sitter-javascript
|
||||||
|
tree-sitter-markdown
|
||||||
|
tree-sitter-nix
|
||||||
|
tree-sitter-norg
|
||||||
|
tree-sitter-python
|
||||||
|
tree-sitter-regex
|
||||||
|
tree-sitter-scss
|
||||||
|
]))
|
||||||
|
# Treesitter Plugins
|
||||||
|
nvim-ts-rainbow
|
||||||
|
nvim-treesitter-context
|
||||||
|
twilight-nvim
|
||||||
|
];
|
||||||
|
extraPackages = with pkgs; [
|
||||||
|
# For nvim-lspconfig, Terraform Language Server
|
||||||
|
terraform-ls
|
||||||
|
# For tree-sitter
|
||||||
|
tree-sitter
|
||||||
|
nodejs
|
||||||
|
clang
|
||||||
|
clangStdenv.cc
|
||||||
|
];
|
||||||
|
};
|
||||||
|
xdg.configFile."nvim/init.lua".source = initLua;
|
||||||
|
}
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
{ config, pkgs, meta, lib, ... }: {
|
{pkgs, ...}: {
|
||||||
programs.rbw = {
|
programs.rbw = {
|
||||||
enable = true;
|
enable = true;
|
||||||
package = lib.mkIf (meta.trusted ? secrets) (pkgs.writeShellScriptBin "bitw" ''${pkgs.rbw-bitw}/bin/bitw -p gpg://${config.secrets.repo.bitw.source} "$@"'');
|
package = pkgs.rbw-bitw;
|
||||||
settings = {
|
settings = {
|
||||||
email = "kat@kittywit.ch";
|
email = "kat@kittywit.ch";
|
||||||
base_url = "https://vault.kittywit.ch";
|
base_url = "https://vault.kittywit.ch";
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
{ config, ... }: {
|
_: {
|
||||||
programs.direnv = {
|
programs.direnv = {
|
||||||
enable = true;
|
enable = true;
|
||||||
enableZshIntegration = true;
|
enableZshIntegration = true;
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
{ config, pkgs, ... }: {
|
{pkgs, ...}: {
|
||||||
home.packages = [ pkgs.exa ];
|
home.packages = [pkgs.exa];
|
||||||
|
|
||||||
programs.zsh.shellAliases = {
|
programs.zsh.shellAliases = {
|
||||||
exa = "exa --time-style long-iso";
|
exa = "exa --time-style long-iso";
|
||||||
|
|
|
||||||
|
|
@ -1,9 +1,15 @@
|
||||||
{ config, pkgs, lib, ... }: {
|
{
|
||||||
|
pkgs,
|
||||||
|
lib,
|
||||||
|
...
|
||||||
|
}: let
|
||||||
|
inherit (lib.lists) optional;
|
||||||
|
in {
|
||||||
programs.fzf = {
|
programs.fzf = {
|
||||||
enable = true;
|
enable = true;
|
||||||
enableZshIntegration = true;
|
enableZshIntegration = true;
|
||||||
};
|
};
|
||||||
programs.zsh.plugins = lib.optional (pkgs.hostPlatform == pkgs.buildPlatform) {
|
programs.zsh.plugins = optional (pkgs.hostPlatform == pkgs.buildPlatform) {
|
||||||
name = "fzf-tab";
|
name = "fzf-tab";
|
||||||
src = "${pkgs.zsh-fzf-tab}/share/fzf-tab";
|
src = "${pkgs.zsh-fzf-tab}/share/fzf-tab";
|
||||||
};
|
};
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,4 @@
|
||||||
{ config, pkgs, lib, ... }:
|
{pkgs, ...}: {
|
||||||
|
|
||||||
{
|
|
||||||
home.packages = with pkgs; [
|
home.packages = with pkgs; [
|
||||||
gitAndTools.git-remote-gcrypt
|
gitAndTools.git-remote-gcrypt
|
||||||
git-crypt
|
git-crypt
|
||||||
|
|
@ -13,7 +11,7 @@
|
||||||
userName = "Kat Inskip";
|
userName = "Kat Inskip";
|
||||||
userEmail = "kat@inskip.me";
|
userEmail = "kat@inskip.me";
|
||||||
extraConfig = {
|
extraConfig = {
|
||||||
init = { defaultBranch = "main"; };
|
init = {defaultBranch = "main";};
|
||||||
protocol.gcrypt.allow = "always";
|
protocol.gcrypt.allow = "always";
|
||||||
annex = {
|
annex = {
|
||||||
autocommit = false;
|
autocommit = false;
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,4 @@
|
||||||
{ config, ... }:
|
{config, ...}: {
|
||||||
|
|
||||||
{
|
|
||||||
xdg.configFile."inputrc".text = ''
|
xdg.configFile."inputrc".text = ''
|
||||||
set editing-mode vi
|
set editing-mode vi
|
||||||
set keyseq-timeout 1
|
set keyseq-timeout 1
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,6 @@
|
||||||
{ config, ... }: {
|
_: {
|
||||||
home.language = let
|
home.language = let
|
||||||
ca = "en_CA.UTF-8";
|
ca = "en_CA.UTF-8";
|
||||||
dk = "en_DK.UTF-8";
|
|
||||||
in {
|
in {
|
||||||
base = ca;
|
base = ca;
|
||||||
ctype = ca;
|
ctype = ca;
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
{ config, pkgs, ... }: {
|
{pkgs, ...}: {
|
||||||
home.packages = with pkgs; [
|
home.packages = with pkgs; [
|
||||||
# task managers
|
# task managers
|
||||||
htop
|
htop
|
||||||
|
|
|
||||||
|
|
@ -1,12 +1,16 @@
|
||||||
{ config, lib, pkgs, ... }:
|
|
||||||
|
|
||||||
{
|
{
|
||||||
|
pkgs,
|
||||||
|
lib,
|
||||||
|
...
|
||||||
|
}: let
|
||||||
|
inherit (lib) toTOML;
|
||||||
|
in {
|
||||||
home.packages = with pkgs; [
|
home.packages = with pkgs; [
|
||||||
#rink-readline TODO: wait for fix
|
#rink-readline TODO: wait for fix
|
||||||
rink
|
rink
|
||||||
];
|
];
|
||||||
|
|
||||||
xdg.configFile."rink/config.toml".text = lib.toTOML {
|
xdg.configFile."rink/config.toml".text = toTOML {
|
||||||
colors = {
|
colors = {
|
||||||
enabled = true;
|
enabled = true;
|
||||||
theme = "my_theme";
|
theme = "my_theme";
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,4 @@
|
||||||
{ meta, config, pkgs, lib, ... }:
|
_: {
|
||||||
|
|
||||||
{
|
|
||||||
programs.ssh = {
|
programs.ssh = {
|
||||||
enable = true;
|
enable = true;
|
||||||
controlMaster = "auto";
|
controlMaster = "auto";
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
{ config, ... }: {
|
_: {
|
||||||
programs.starship = {
|
programs.starship = {
|
||||||
enable = true;
|
enable = true;
|
||||||
enableZshIntegration = true;
|
enableZshIntegration = true;
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,10 @@
|
||||||
{ config, lib, pkgs, ... }:
|
|
||||||
|
|
||||||
{
|
{
|
||||||
|
lib,
|
||||||
|
pkgs,
|
||||||
|
...
|
||||||
|
}: let
|
||||||
|
inherit (lib.attrsets) mapAttrs;
|
||||||
|
in {
|
||||||
programs.zsh.shellAliases = {
|
programs.zsh.shellAliases = {
|
||||||
tt = "tmux new -AD -s";
|
tt = "tmux new -AD -s";
|
||||||
};
|
};
|
||||||
|
|
@ -9,7 +13,7 @@
|
||||||
terminal = "tmux-256color";
|
terminal = "tmux-256color";
|
||||||
keyMode = "vi";
|
keyMode = "vi";
|
||||||
baseIndex = 1;
|
baseIndex = 1;
|
||||||
extraConfig = with lib.mapAttrs (_: v: "colour${toString v}") pkgs.base16.shell.shell256; ''
|
extraConfig = with mapAttrs (_: v: "colour${toString v}") pkgs.base16.shell.shell256; ''
|
||||||
# proper title handling
|
# proper title handling
|
||||||
set -g set-titles on
|
set -g set-titles on
|
||||||
set -g set-titles-string "#T"
|
set -g set-titles-string "#T"
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,8 @@
|
||||||
{ config, pkgs, ... }: {
|
{
|
||||||
|
config,
|
||||||
|
pkgs,
|
||||||
|
...
|
||||||
|
}: {
|
||||||
# ensure .local/share/z is created
|
# ensure .local/share/z is created
|
||||||
xdg.dataFile."z/.keep".text = "";
|
xdg.dataFile."z/.keep".text = "";
|
||||||
|
|
||||||
|
|
@ -6,7 +10,8 @@
|
||||||
localVariables = {
|
localVariables = {
|
||||||
_Z_DATA = "${config.xdg.dataHome}/z/data";
|
_Z_DATA = "${config.xdg.dataHome}/z/data";
|
||||||
};
|
};
|
||||||
plugins = map (plugin: (with pkgs.${plugin}; {
|
plugins =
|
||||||
|
map (plugin: (with pkgs.${plugin}; {
|
||||||
name = pname;
|
name = pname;
|
||||||
inherit src;
|
inherit src;
|
||||||
})) [
|
})) [
|
||||||
|
|
|
||||||
|
|
@ -1,24 +1,24 @@
|
||||||
{ config, lib, pkgs, ... }:
|
|
||||||
|
|
||||||
{
|
{
|
||||||
|
config,
|
||||||
|
lib,
|
||||||
|
pkgs,
|
||||||
|
...
|
||||||
|
}: {
|
||||||
home.packages = with pkgs; [
|
home.packages = with pkgs; [
|
||||||
# programs.zsh.enableAutosuggestions only includes nix-zsh-autocompletions
|
# programs.zsh.enableAutosuggestions only includes nix-zsh-autocompletions
|
||||||
zsh-completions
|
zsh-completions
|
||||||
];
|
];
|
||||||
|
|
||||||
xdg.configFile."kattheme_immutable.json".text = builtins.toJSON rec {
|
xdg.configFile."kattheme_immutable.json".text = builtins.toJSON rec {
|
||||||
default = config.base16.defaultSchemeName;
|
default = config.base16.defaultSchemeName;
|
||||||
current = default;
|
current = default;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
programs.zsh = {
|
programs.zsh = {
|
||||||
enable = true;
|
enable = true;
|
||||||
enableSyntaxHighlighting = true;
|
enableSyntaxHighlighting = true;
|
||||||
enableAutosuggestions = true;
|
enableAutosuggestions = true;
|
||||||
initExtra =
|
initExtra = let
|
||||||
let
|
|
||||||
zshOpts = [
|
zshOpts = [
|
||||||
"auto_pushd"
|
"auto_pushd"
|
||||||
"pushd_ignore_dups"
|
"pushd_ignore_dups"
|
||||||
|
|
@ -40,12 +40,16 @@ xdg.configFile."kattheme_immutable.json".text = builtins.toJSON rec {
|
||||||
"nolistbeep"
|
"nolistbeep"
|
||||||
"autolist"
|
"autolist"
|
||||||
"listrowsfirst"
|
"listrowsfirst"
|
||||||
]; in
|
];
|
||||||
''
|
in ''
|
||||||
${if pkgs.hostPlatform.isLinux then ''
|
${
|
||||||
|
if pkgs.hostPlatform.isLinux
|
||||||
|
then ''
|
||||||
eval $(dircolors -b | sd "\*#=00;90" "*\#=00;90")
|
eval $(dircolors -b | sd "\*#=00;90" "*\#=00;90")
|
||||||
'' else ''
|
''
|
||||||
''}
|
else ''
|
||||||
|
''
|
||||||
|
}
|
||||||
PROMPT_EOL_MARK='''
|
PROMPT_EOL_MARK='''
|
||||||
ZSH_TAB_TITLE_ADDITIONAL_TERMS='wezterm'
|
ZSH_TAB_TITLE_ADDITIONAL_TERMS='wezterm'
|
||||||
ZSH_TAB_TITLE_ENABLE_FULL_COMMAND=true
|
ZSH_TAB_TITLE_ENABLE_FULL_COMMAND=true
|
||||||
|
|
@ -71,9 +75,12 @@ xdg.configFile."kattheme_immutable.json".text = builtins.toJSON rec {
|
||||||
zstyle ':fzf-tab:complete:cd:*' fzf-preview 'exa -1lb --color=always $realpath'
|
zstyle ':fzf-tab:complete:cd:*' fzf-preview 'exa -1lb --color=always $realpath'
|
||||||
${lib.concatStringsSep "\n" (map (opt: "setopt ${opt}") zshOpts)}
|
${lib.concatStringsSep "\n" (map (opt: "setopt ${opt}") zshOpts)}
|
||||||
bindkey '^ ' autosuggest-accept
|
bindkey '^ ' autosuggest-accept
|
||||||
${if pkgs.hostPlatform.isDarwin then ''
|
${
|
||||||
|
if pkgs.hostPlatform.isDarwin
|
||||||
|
then ''
|
||||||
export PATH="''${KREW_ROOT:-$HOME/.krew}/bin:$PATH"
|
export PATH="''${KREW_ROOT:-$HOME/.krew}/bin:$PATH"
|
||||||
'' else ""
|
''
|
||||||
|
else ""
|
||||||
}
|
}
|
||||||
'';
|
'';
|
||||||
shellAliases = lib.mkMerge [
|
shellAliases = lib.mkMerge [
|
||||||
|
|
|
||||||
3
home/state.nix
Normal file
3
home/state.nix
Normal file
|
|
@ -0,0 +1,3 @@
|
||||||
|
_: {
|
||||||
|
home.stateVersion = "22.11";
|
||||||
|
}
|
||||||
|
|
@ -1,19 +0,0 @@
|
||||||
{
|
|
||||||
config,
|
|
||||||
tree,
|
|
||||||
machine,
|
|
||||||
...
|
|
||||||
}: {
|
|
||||||
home-manager = {
|
|
||||||
useGlobalPkgs = true;
|
|
||||||
useUserPackages = true;
|
|
||||||
sharedModules = with tree; [
|
|
||||||
home.modules
|
|
||||||
home.common
|
|
||||||
];
|
|
||||||
extraSpecialArgs = {
|
|
||||||
inherit tree machine;
|
|
||||||
nixos = config;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
@ -1,89 +0,0 @@
|
||||||
{ config, lib, pkgs, nixos, ... }:
|
|
||||||
|
|
||||||
let
|
|
||||||
inherit (lib.modules) mkIf;
|
|
||||||
inherit (lib.strings) concatStringsSep fixedWidthNumber hasInfix;
|
|
||||||
inherit (lib.attrsets) mapAttrs filterAttrs;
|
|
||||||
packDir = builtins.toString(pkgs.vimUtils.packDir config.programs.neovim.generatedConfigViml.configure.packages);
|
|
||||||
initLua = pkgs.substituteAll ({
|
|
||||||
name = "init.lua";
|
|
||||||
src = ./init.lua;
|
|
||||||
inherit packDir;
|
|
||||||
base16ShellPath = config.base16.shell.package;
|
|
||||||
inherit (config.base16) defaultSchemeName;
|
|
||||||
defaultSchemeSlug = config.base16.defaultScheme.slug;
|
|
||||||
} // mapAttrs (_: col: fixedWidthNumber 2 col.ansiIndex)
|
|
||||||
(filterAttrs (var: _: hasInfix "base" var) config.base16.defaultScheme));
|
|
||||||
in {
|
|
||||||
home.sessionVariables = mkIf config.programs.neovim.enable { EDITOR = "nvim"; };
|
|
||||||
|
|
||||||
programs.neovim = {
|
|
||||||
enable = true;
|
|
||||||
vimAlias = true;
|
|
||||||
viAlias = true;
|
|
||||||
plugins = with pkgs.vimPlugins; [
|
|
||||||
# Libraries
|
|
||||||
plenary-nvim
|
|
||||||
# Disables and re-enables highlighting when searching
|
|
||||||
vim-cool
|
|
||||||
# Colour highlighting
|
|
||||||
vim-hexokinase
|
|
||||||
# Git porcelain
|
|
||||||
vim-fugitive
|
|
||||||
# Start screen
|
|
||||||
vim-startify
|
|
||||||
# Re-open with cursor at the same place
|
|
||||||
vim-lastplace
|
|
||||||
# Status Bar
|
|
||||||
lualine-nvim
|
|
||||||
# EasyMotion Equivalent
|
|
||||||
hop-nvim
|
|
||||||
# org-mode for vim
|
|
||||||
# neorg
|
|
||||||
# base16
|
|
||||||
config.base16.vim.plugin
|
|
||||||
# Fonts
|
|
||||||
nvim-web-devicons
|
|
||||||
# Completion
|
|
||||||
nvim-cmp
|
|
||||||
# Fuzzy Finder
|
|
||||||
telescope-nvim
|
|
||||||
# Buffers
|
|
||||||
bufferline-nvim
|
|
||||||
# Language Server
|
|
||||||
nvim-lspconfig
|
|
||||||
(pkgs.vimPlugins.nvim-treesitter.withPlugins (plugins: with pkgs.tree-sitter-grammars; [
|
|
||||||
tree-sitter-c
|
|
||||||
tree-sitter-lua
|
|
||||||
tree-sitter-rust
|
|
||||||
#tree-sitter-bash
|
|
||||||
tree-sitter-css
|
|
||||||
tree-sitter-dockerfile
|
|
||||||
tree-sitter-go
|
|
||||||
tree-sitter-hcl
|
|
||||||
tree-sitter-html
|
|
||||||
tree-sitter-javascript
|
|
||||||
tree-sitter-markdown
|
|
||||||
tree-sitter-nix
|
|
||||||
tree-sitter-norg
|
|
||||||
tree-sitter-python
|
|
||||||
tree-sitter-regex
|
|
||||||
tree-sitter-scss
|
|
||||||
]))
|
|
||||||
# Treesitter Plugins
|
|
||||||
nvim-ts-rainbow
|
|
||||||
nvim-treesitter-context
|
|
||||||
twilight-nvim
|
|
||||||
];
|
|
||||||
extraPackages = with pkgs; [
|
|
||||||
# For nvim-lspconfig, Terraform Language Server
|
|
||||||
terraform-ls
|
|
||||||
# For tree-sitter
|
|
||||||
tree-sitter
|
|
||||||
nodejs
|
|
||||||
clang
|
|
||||||
clangStdenv.cc
|
|
||||||
];
|
|
||||||
};
|
|
||||||
xdg.configFile."nvim/init.lua".source = initLua;
|
|
||||||
}
|
|
||||||
|
|
@ -1,345 +0,0 @@
|
||||||
-----------------------------------------------------------
|
|
||||||
-- Variables
|
|
||||||
-----------------------------------------------------------
|
|
||||||
local g = vim.g -- Global variables
|
|
||||||
local opt = vim.opt -- Set options (global/buffer/windows-scoped)
|
|
||||||
local wo = vim.wo -- Window local variables
|
|
||||||
local api = vim.api -- Lua API
|
|
||||||
|
|
||||||
-----------------------------------------------------------
|
|
||||||
-- Nix Fuckery
|
|
||||||
-----------------------------------------------------------
|
|
||||||
opt.packpath:prepend{"@packDir@"}
|
|
||||||
opt.runtimepath:prepend{"@packDir@"}
|
|
||||||
|
|
||||||
-----------------------------------------------------------
|
|
||||||
-- Base16
|
|
||||||
-----------------------------------------------------------
|
|
||||||
vim.g.base16colorspace = 256
|
|
||||||
vim.g.base16background = "@defaultSchemeName@"
|
|
||||||
g.base16_shell_path = "@base16ShellPath@"
|
|
||||||
vim.cmd("colorscheme base16-@defaultSchemeSlug@")
|
|
||||||
g.colors_name = "@defaultSchemeSlug@"
|
|
||||||
|
|
||||||
local base16 = {
|
|
||||||
base00 = "@base00@",
|
|
||||||
base01 = "@base01@",
|
|
||||||
base02 = "@base02@",
|
|
||||||
base03 = "@base03@",
|
|
||||||
base04 = "@base04@",
|
|
||||||
base05 = "@base05@",
|
|
||||||
base06 = "@base06@",
|
|
||||||
base07 = "@base07@",
|
|
||||||
base08 = "@base08@",
|
|
||||||
base09 = "@base09@",
|
|
||||||
base0A = "@base0A@",
|
|
||||||
base0B = "@base0B@",
|
|
||||||
base0C = "@base0C@",
|
|
||||||
base0D = "@base0D@",
|
|
||||||
base0E = "@base0E@",
|
|
||||||
base0F = "@base0F@"
|
|
||||||
}
|
|
||||||
|
|
||||||
api.nvim_create_autocmd("vimenter", {
|
|
||||||
command = "highlight Normal guibg=NONE ctermbg=NONE"
|
|
||||||
})
|
|
||||||
api.nvim_create_autocmd("SourcePost", {
|
|
||||||
command = "highlight Normal ctermbg=NONE guibg=NONE | " ..
|
|
||||||
"highlight LineNr ctermbg=NONE guibg=NONE | " ..
|
|
||||||
"highlight SignColumn ctermbg=NONE guibg=NONE"
|
|
||||||
})
|
|
||||||
|
|
||||||
|
|
||||||
-----------------------------------------------------------
|
|
||||||
-- General
|
|
||||||
-----------------------------------------------------------
|
|
||||||
opt.mouse = 'a' -- Enable mouse support
|
|
||||||
opt.clipboard = 'unnamedplus' -- Copy/paste to system clipboard
|
|
||||||
opt.completeopt = 'longest,menuone' -- Autocomplete options
|
|
||||||
opt.backup = false -- Disable backup
|
|
||||||
opt.writebackup = false -- Disable backup
|
|
||||||
opt.ttimeoutlen = 100 -- Mapping timeout
|
|
||||||
|
|
||||||
-----------------------------------------------------------
|
|
||||||
-- Neovim UI
|
|
||||||
-----------------------------------------------------------
|
|
||||||
opt.number = true -- Show line number
|
|
||||||
opt.relativenumber = true -- Relative line numbers
|
|
||||||
opt.showmatch = true -- Highlight matching parenthesis
|
|
||||||
opt.foldmethod = 'marker' -- Enable folding (default 'foldmarker')
|
|
||||||
opt.colorcolumn = '80' -- Line length marker at 80 columns
|
|
||||||
opt.splitright = true -- Vertical split to the right
|
|
||||||
opt.splitbelow = true -- Horizontal split to the bottom
|
|
||||||
opt.ignorecase = true -- Ignore case letters when search
|
|
||||||
opt.smartcase = true -- Ignore lowercase for the whole pattern
|
|
||||||
opt.wrap = true -- Wrap on word boundary
|
|
||||||
opt.linebreak = true -- Wrap on word boundary
|
|
||||||
opt.showbreak = " ↳" -- Character to use to display word boundary
|
|
||||||
opt.termguicolors = false -- Enable 24-bit RGB colors
|
|
||||||
opt.laststatus = 3 -- Set global statusline
|
|
||||||
opt.cursorline = true -- Highlight cursor screenline
|
|
||||||
opt.cmdheight = 1 -- Command entry line height
|
|
||||||
opt.hlsearch = true -- Highlight matches with last search pattern
|
|
||||||
|
|
||||||
-----------------------------------------------------------
|
|
||||||
-- Tabs, indent
|
|
||||||
-----------------------------------------------------------
|
|
||||||
opt.expandtab = true -- Use spaces instead of tabs
|
|
||||||
opt.shiftwidth = 2 -- Shift 2 spaces when tab
|
|
||||||
opt.tabstop = 2 -- 1 tab == 2 spaces
|
|
||||||
opt.smartindent = true -- Autoindent new lines
|
|
||||||
opt.list = true -- List chars
|
|
||||||
opt.listchars = {
|
|
||||||
tab = '» ',
|
|
||||||
extends = '›',
|
|
||||||
precedes= '‹',
|
|
||||||
nbsp = '·',
|
|
||||||
trail = '✖'
|
|
||||||
}
|
|
||||||
|
|
||||||
-----------------------------------------------------------
|
|
||||||
-- Memory, CPU
|
|
||||||
-----------------------------------------------------------
|
|
||||||
opt.hidden = true -- Enable background buffers
|
|
||||||
opt.history = 100 -- Remember N lines in history
|
|
||||||
opt.lazyredraw = true -- Faster scrolling
|
|
||||||
opt.synmaxcol = 240 -- Max column for syntax highlight
|
|
||||||
opt.updatetime = 700 -- ms to wait for trigger an event
|
|
||||||
|
|
||||||
-----------------------------------------------------------
|
|
||||||
-- Plugins
|
|
||||||
-----------------------------------------------------------
|
|
||||||
|
|
||||||
-- Remove perl
|
|
||||||
g.loaded_perl_provider = 0
|
|
||||||
|
|
||||||
-- Hexokinaise
|
|
||||||
g.Hexokinase_highlighters = {'virtual'}
|
|
||||||
g.Hexokinase_optInPatterns = {
|
|
||||||
'full_hex',
|
|
||||||
'rgb',
|
|
||||||
'rgba',
|
|
||||||
'hsl',
|
|
||||||
'hsla',
|
|
||||||
'colour_names'
|
|
||||||
}
|
|
||||||
|
|
||||||
-- Lastplace
|
|
||||||
g.lastplace_ignore = 'gitcommit,gitrebase,svn,hgcommit'
|
|
||||||
|
|
||||||
-----------------------------------------------------------
|
|
||||||
-- Startup
|
|
||||||
-----------------------------------------------------------
|
|
||||||
|
|
||||||
-- Disable builtins plugins
|
|
||||||
local disabled_built_ins = {
|
|
||||||
"netrw",
|
|
||||||
"netrwPlugin",
|
|
||||||
"netrwSettings",
|
|
||||||
"netrwFileHandlers",
|
|
||||||
"gzip",
|
|
||||||
"zip",
|
|
||||||
"zipPlugin",
|
|
||||||
"tar",
|
|
||||||
"tarPlugin",
|
|
||||||
"getscript",
|
|
||||||
"getscriptPlugin",
|
|
||||||
"vimball",
|
|
||||||
"vimballPlugin",
|
|
||||||
"2html_plugin",
|
|
||||||
"logipat",
|
|
||||||
"rrhelper",
|
|
||||||
"spellfile_plugin",
|
|
||||||
"matchit"
|
|
||||||
}
|
|
||||||
|
|
||||||
for _, plugin in pairs(disabled_built_ins) do
|
|
||||||
g["loaded_" .. plugin] = 1
|
|
||||||
end
|
|
||||||
|
|
||||||
-----------------------------------------------------------
|
|
||||||
-- Plugins
|
|
||||||
-----------------------------------------------------------
|
|
||||||
|
|
||||||
-- lualine
|
|
||||||
require('lualine').setup{}
|
|
||||||
|
|
||||||
-- nvim-cmp
|
|
||||||
local cmp = require('cmp')
|
|
||||||
|
|
||||||
cmp.setup({
|
|
||||||
snippet = {
|
|
||||||
expand = function(args)
|
|
||||||
vim.fn["vsnip#anonymous"](args.body)
|
|
||||||
end,
|
|
||||||
},
|
|
||||||
mapping = {
|
|
||||||
['<C-y>'] = cmp.mapping.confirm({ select = true }),
|
|
||||||
},
|
|
||||||
sources = {
|
|
||||||
-- { name = 'neorg' },
|
|
||||||
}
|
|
||||||
})
|
|
||||||
|
|
||||||
-- lspconfig
|
|
||||||
require('lspconfig').terraformls.setup{}
|
|
||||||
|
|
||||||
api.nvim_create_autocmd('BufWritePre', {
|
|
||||||
pattern = '*.tf',
|
|
||||||
command = 'lua vim.lsp.buf.formatting_sync()'
|
|
||||||
})
|
|
||||||
|
|
||||||
--[[
|
|
||||||
-- neorg
|
|
||||||
require('neorg').setup {
|
|
||||||
-- Tell Neorg what modules to load
|
|
||||||
load = {
|
|
||||||
['core.defaults'] = {}, -- Load all the default modules
|
|
||||||
['core.norg.concealer'] = {}, -- Allows for use of icons
|
|
||||||
['core.norg.dirman'] = { -- Manage your directories with Neorg
|
|
||||||
config = {
|
|
||||||
engine = 'nvim-cmp',
|
|
||||||
workspaces = {
|
|
||||||
home = '~/neorg'
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
}]]--
|
|
||||||
|
|
||||||
-- telescope
|
|
||||||
local telescope = require('telescope.builtin')
|
|
||||||
|
|
||||||
vim.keymap.set("n", "<leader>ff", function()
|
|
||||||
telescope.find_files()
|
|
||||||
end, { silent = true })
|
|
||||||
|
|
||||||
vim.keymap.set("n", "<leader>fg", function()
|
|
||||||
telescope.live_grep()
|
|
||||||
end, { silent = true })
|
|
||||||
|
|
||||||
vim.keymap.set("n", "<leader>fb", function()
|
|
||||||
telescope.buffers()
|
|
||||||
end, { silent = true })
|
|
||||||
|
|
||||||
vim.keymap.set("n", "<leader>fh", function()
|
|
||||||
telescope.help_tags()
|
|
||||||
end, { silent = true })
|
|
||||||
|
|
||||||
-- treesitter
|
|
||||||
require('nvim-treesitter.configs').setup {
|
|
||||||
-- A list of parser names, or "all"
|
|
||||||
ensure_installed = {
|
|
||||||
},
|
|
||||||
|
|
||||||
sync_install = false,
|
|
||||||
auto_install = false,
|
|
||||||
ignore_install = {},
|
|
||||||
|
|
||||||
highlight = {
|
|
||||||
enable = true,
|
|
||||||
additional_vim_regex_highlighting = false,
|
|
||||||
},
|
|
||||||
indent = {
|
|
||||||
enable = true,
|
|
||||||
},
|
|
||||||
rainbow = {
|
|
||||||
enable = true,
|
|
||||||
extended_mode = true
|
|
||||||
},
|
|
||||||
}
|
|
||||||
|
|
||||||
-- twilight
|
|
||||||
require("twilight").setup {
|
|
||||||
dimming = {
|
|
||||||
alpha = 0.5,
|
|
||||||
},
|
|
||||||
context = 10,
|
|
||||||
expand = {
|
|
||||||
"function",
|
|
||||||
"method",
|
|
||||||
"table",
|
|
||||||
"if_statement",
|
|
||||||
},
|
|
||||||
}
|
|
||||||
|
|
||||||
-- bufferline
|
|
||||||
require('bufferline').setup {
|
|
||||||
options = {
|
|
||||||
mode = "buffers", -- set to "tabs" to only show tabpages instead
|
|
||||||
numbers = "ordinal",
|
|
||||||
close_command = "bdelete! %d", -- can be a string | function, see "Mouse actions"
|
|
||||||
right_mouse_command = "bdelete! %d", -- can be a string | function, see "Mouse actions"
|
|
||||||
left_mouse_command = "buffer %d", -- can be a string | function, see "Mouse actions"
|
|
||||||
middle_mouse_command = nil, -- can be a string | function, see "Mouse actions"
|
|
||||||
indicator = {
|
|
||||||
icon = '▎',
|
|
||||||
style = 'icon',
|
|
||||||
},
|
|
||||||
buffer_close_icon = '',
|
|
||||||
modified_icon = '●',
|
|
||||||
close_icon = '',
|
|
||||||
left_trunc_marker = '',
|
|
||||||
right_trunc_marker = '',
|
|
||||||
name_formatter = function(buf) -- buf contains a "name", "path" and "bufnr"
|
|
||||||
-- remove extension from markdown files for example
|
|
||||||
if buf.name:match('%.md') then
|
|
||||||
return vim.fn.fnamemodify(buf.name, ':t:r')
|
|
||||||
end
|
|
||||||
end,
|
|
||||||
max_name_length = 18,
|
|
||||||
max_prefix_length = 15, -- prefix used when a buffer is de-duplicated
|
|
||||||
tab_size = 18,
|
|
||||||
diagnostics = "nvim_lsp",
|
|
||||||
diagnostics_update_in_insert = false,
|
|
||||||
color_icons = true,
|
|
||||||
show_buffer_icons = true, -- disable filetype icons for buffers
|
|
||||||
show_buffer_close_icons = true,
|
|
||||||
show_close_icon = false,
|
|
||||||
show_tab_indicators = true,
|
|
||||||
persist_buffer_sort = true, -- whether or not custom sorted buffers should persist
|
|
||||||
separator_style = "slant",
|
|
||||||
always_show_bufferline = true,
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
local barColor = base16.base00;
|
|
||||||
|
|
||||||
local highlightItems = {
|
|
||||||
BufferLineFill = "bg",
|
|
||||||
BufferLineBackground = "bg",
|
|
||||||
BufferLineSeparator = "fg",
|
|
||||||
BufferLineSeparatorSelected = "fg",
|
|
||||||
BufferLineSeparatorVisible = "fg",
|
|
||||||
}
|
|
||||||
|
|
||||||
local commandString = ""
|
|
||||||
|
|
||||||
for item, ground in pairs(highlightItems) do
|
|
||||||
commandString = "highlight " .. item .. " cterm" .. ground .. "=" .. barColor .. " | " .. commandString
|
|
||||||
end
|
|
||||||
|
|
||||||
api.nvim_create_autocmd("ColorScheme", {
|
|
||||||
command = commandString;
|
|
||||||
})
|
|
||||||
|
|
||||||
-- hop
|
|
||||||
local hop = require('hop')
|
|
||||||
local directions = require("hop.hint").HintDirection
|
|
||||||
hop.setup()
|
|
||||||
|
|
||||||
vim.keymap.set("", "t", function()
|
|
||||||
hop.hint_words()
|
|
||||||
end, {})
|
|
||||||
|
|
||||||
vim.keymap.set("", "T", function()
|
|
||||||
hop.hint_lines_skip_whitespace()
|
|
||||||
end, {remap=true})
|
|
||||||
|
|
||||||
vim.keymap.set("", "f", function()
|
|
||||||
hop.hint_char1({ direction = directions.AFTER_CURSOR, current_line_only = true })
|
|
||||||
end, {remap=true})
|
|
||||||
|
|
||||||
vim.keymap.set("", "F", function()
|
|
||||||
hop.hint_char1({ direction = directions.BEFORE_CURSOR, current_line_only = true })
|
|
||||||
end, {remap=true})
|
|
||||||
|
|
@ -1,10 +1,12 @@
|
||||||
_: {
|
_: {
|
||||||
programs.wezterm.enable = true;
|
programs.wezterm = {
|
||||||
xdg.configFile."wezterm/wezterm.lua".text = ''
|
enable = true;
|
||||||
|
extraConfig = ''
|
||||||
local = wezterm = require 'wezterm'
|
local = wezterm = require 'wezterm'
|
||||||
return {
|
return {
|
||||||
check_for_updates = false,
|
check_for_updates = false,
|
||||||
enable_tab_bar = true
|
enable_tab_bar = true
|
||||||
}
|
}
|
||||||
'';
|
'';
|
||||||
|
};
|
||||||
}
|
}
|
||||||
|
|
|
||||||
6
nixos/base.nix
Normal file
6
nixos/base.nix
Normal file
|
|
@ -0,0 +1,6 @@
|
||||||
|
_: {
|
||||||
|
boot.loader = {
|
||||||
|
grub.configurationLimit = 8;
|
||||||
|
systemd-boot.configurationLimit = 8;
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
@ -1,7 +1,4 @@
|
||||||
{
|
{pkgs, ...}: {
|
||||||
pkgs,
|
|
||||||
...
|
|
||||||
}: {
|
|
||||||
services.xserver = {
|
services.xserver = {
|
||||||
enable = true;
|
enable = true;
|
||||||
desktopManager.gnome.enable = true;
|
desktopManager.gnome.enable = true;
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,4 @@
|
||||||
{
|
{lib, ...}: let
|
||||||
lib,
|
|
||||||
...
|
|
||||||
}: let
|
|
||||||
inherit (lib.modules) mkDefault;
|
inherit (lib.modules) mkDefault;
|
||||||
in {
|
in {
|
||||||
powerManagement.cpuFreqGovernor = mkDefault "powersave";
|
powerManagement.cpuFreqGovernor = mkDefault "powersave";
|
||||||
|
|
|
||||||
9
nixos/nix.nix
Normal file
9
nixos/nix.nix
Normal file
|
|
@ -0,0 +1,9 @@
|
||||||
|
{lib, ...}: let
|
||||||
|
inherit (lib.modules) mkDefault;
|
||||||
|
in {
|
||||||
|
nix.gc = {
|
||||||
|
automatic = mkDefault true;
|
||||||
|
dates = mkDefault "weekly";
|
||||||
|
options = mkDefault "--delete-older-than 7d";
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
@ -1,7 +1,4 @@
|
||||||
{
|
{lib, ...}: let
|
||||||
lib,
|
|
||||||
...
|
|
||||||
}: let
|
|
||||||
inherit (lib.attrsets) mapAttrsToList;
|
inherit (lib.attrsets) mapAttrsToList;
|
||||||
in {
|
in {
|
||||||
systemd.tmpfiles.rules = mapAttrsToList (username: _: "f /var/lib/systemd/linger/${username}") config.users.users;
|
systemd.tmpfiles.rules = mapAttrsToList (username: _: "f /var/lib/systemd/linger/${username}") config.users.users;
|
||||||
|
|
|
||||||
197
outputs.nix
197
outputs.nix
|
|
@ -1,194 +1,7 @@
|
||||||
{
|
inputs: let
|
||||||
utils,
|
|
||||||
nixpkgs,
|
|
||||||
darwin,
|
|
||||||
home-manager,
|
|
||||||
ragenix,
|
|
||||||
scalpel,
|
|
||||||
nix-index-database,
|
|
||||||
arcexprs,
|
|
||||||
...
|
|
||||||
} @ inputs: let
|
|
||||||
tree =
|
|
||||||
(inputs.tree.tree {
|
|
||||||
inherit inputs;
|
|
||||||
folder = ./.;
|
|
||||||
config = {
|
|
||||||
"/" = {
|
|
||||||
excludes = [
|
|
||||||
"flake"
|
|
||||||
"default"
|
|
||||||
];
|
|
||||||
};
|
|
||||||
"darwin/modules" = {
|
|
||||||
functor = {
|
|
||||||
enable = true;
|
|
||||||
external = [
|
|
||||||
home-manager.darwinModules.home-manager
|
|
||||||
ragenix.nixosModules.age
|
|
||||||
];
|
|
||||||
};
|
|
||||||
};
|
|
||||||
"system/modules" = {
|
|
||||||
functor = {
|
|
||||||
enable = true;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
"nixos/modules" = {
|
|
||||||
functor = {
|
|
||||||
enable = true;
|
|
||||||
external =
|
|
||||||
[
|
|
||||||
nix-index-database.nixosModules.nix-index
|
|
||||||
home-manager.nixosModules.home-manager
|
|
||||||
ragenix.nixosModules.age
|
|
||||||
]
|
|
||||||
++ (with (import (arcexprs + "/modules")).nixos; [
|
|
||||||
base16
|
|
||||||
base16-shared
|
|
||||||
]);
|
|
||||||
};
|
|
||||||
};
|
|
||||||
"home/modules" = {
|
|
||||||
functor = {
|
|
||||||
enable = true;
|
|
||||||
external =
|
|
||||||
[
|
|
||||||
nix-index-database.hmModules.nix-index
|
|
||||||
]
|
|
||||||
++ (with (import (arcexprs + "/modules")).home-manager; [
|
|
||||||
base16
|
|
||||||
base16-shared
|
|
||||||
]);
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
})
|
|
||||||
.impure;
|
|
||||||
inherit (inputs.nixpkgs) lib;
|
inherit (inputs.nixpkgs) lib;
|
||||||
inherit (lib.lists) fold;
|
tree = import ./tree.nix {inherit inputs;};
|
||||||
inherit (lib.attrsets) mapAttrs mapAttrsToList recursiveUpdate;
|
systems = import ./systems {inherit inputs tree lib;};
|
||||||
inherit (lib.strings) toLower;
|
shells = import ./shells {inherit inputs tree lib;};
|
||||||
inherit (lib.options) mkOption;
|
|
||||||
inherit (lib.types) str listOf attrs unspecified;
|
|
||||||
inherit (lib.modules) evalModules;
|
|
||||||
recursiveMergeAttrs = fold recursiveUpdate {};
|
|
||||||
defaultSpecialArgs = {
|
|
||||||
inherit inputs tree;
|
|
||||||
};
|
|
||||||
hostModule = {
|
|
||||||
config,
|
|
||||||
machine,
|
|
||||||
...
|
|
||||||
}: {
|
|
||||||
options = {
|
|
||||||
arch = mkOption {
|
|
||||||
description = "Processor architecture of the host";
|
|
||||||
type = str;
|
|
||||||
default = "x86_64";
|
|
||||||
};
|
|
||||||
type = mkOption {
|
|
||||||
description = "Operating system type of the host";
|
|
||||||
type = str;
|
|
||||||
default = "NixOS";
|
|
||||||
};
|
|
||||||
folder = mkOption {
|
|
||||||
type = str;
|
|
||||||
internal = true;
|
|
||||||
};
|
|
||||||
system = mkOption {
|
|
||||||
type = str;
|
|
||||||
internal = true;
|
|
||||||
};
|
|
||||||
modules = mkOption {
|
|
||||||
type = listOf unspecified;
|
|
||||||
};
|
|
||||||
specialArgs = mkOption {
|
|
||||||
type = attrs;
|
|
||||||
internal = true;
|
|
||||||
};
|
|
||||||
builder = mkOption {
|
|
||||||
type = unspecified;
|
|
||||||
internal = true;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
config = {
|
|
||||||
system = let
|
|
||||||
kernel =
|
|
||||||
{
|
|
||||||
nixos = "linux";
|
|
||||||
macos = "darwin";
|
|
||||||
darwin = "darwin";
|
|
||||||
linux = "linux";
|
|
||||||
}
|
|
||||||
.${toLower config.type};
|
|
||||||
in "${config.arch}-${kernel}";
|
|
||||||
folder =
|
|
||||||
{
|
|
||||||
nixos = "nixos";
|
|
||||||
macos = "darwin";
|
|
||||||
darwin = "darwin";
|
|
||||||
linux = "linux";
|
|
||||||
}
|
|
||||||
.${toLower config.type};
|
|
||||||
modules = with tree; [
|
|
||||||
tree.${config.folder}.modules
|
|
||||||
home.system
|
|
||||||
];
|
|
||||||
builder =
|
|
||||||
{
|
|
||||||
nixos = nixpkgs.lib.nixosSystem;
|
|
||||||
darwin = darwin.lib.darwinSystem;
|
|
||||||
macos = darwin.lib.darwinSystem;
|
|
||||||
}
|
|
||||||
.${toLower config.type};
|
|
||||||
specialArgs = {inherit machine;} // defaultSpecialArgs;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
hostConfigs = mapAttrs (name: path:
|
|
||||||
evalModules {
|
|
||||||
modules = [
|
|
||||||
hostModule
|
|
||||||
path
|
|
||||||
];
|
|
||||||
specialArgs =
|
|
||||||
{
|
|
||||||
machine = name;
|
|
||||||
}
|
|
||||||
// defaultSpecialArgs;
|
|
||||||
})
|
|
||||||
tree.systems;
|
|
||||||
processHost = name: cfg: let
|
|
||||||
host = cfg.config;
|
|
||||||
in {
|
|
||||||
"${host.folder}Configurations".${name} = let
|
|
||||||
hostConfig = host.builder {
|
|
||||||
inherit (host) system modules specialArgs;
|
|
||||||
};
|
|
||||||
in
|
|
||||||
if host.folder == "nixos"
|
|
||||||
then
|
|
||||||
hostConfig.extendModules {
|
|
||||||
modules = [scalpel.nixosModule];
|
|
||||||
specialArgs = {
|
|
||||||
prev = hostConfig;
|
|
||||||
};
|
|
||||||
}
|
|
||||||
else hostConfig;
|
|
||||||
};
|
|
||||||
in
|
in
|
||||||
recursiveMergeAttrs (mapAttrsToList processHost hostConfigs)
|
{inherit inputs tree lib;} // systems // shells
|
||||||
// {
|
|
||||||
inherit inputs tree hostConfigs;
|
|
||||||
}
|
|
||||||
// (utils.lib.eachDefaultSystem (system: {
|
|
||||||
devShells = let
|
|
||||||
shells = mapAttrs (_: path:
|
|
||||||
import path rec {
|
|
||||||
inherit tree inputs system;
|
|
||||||
pkgs = nixpkgs.legacyPackages.${system};
|
|
||||||
inherit (nixpkgs) lib;
|
|
||||||
})
|
|
||||||
tree.shells;
|
|
||||||
in shells // { default = shells.repo; };
|
|
||||||
}))
|
|
||||||
|
|
|
||||||
20
shells/default.nix
Normal file
20
shells/default.nix
Normal file
|
|
@ -0,0 +1,20 @@
|
||||||
|
{
|
||||||
|
lib,
|
||||||
|
tree,
|
||||||
|
inputs,
|
||||||
|
...
|
||||||
|
}: let
|
||||||
|
inherit (lib.attrsets) mapAttrs;
|
||||||
|
in
|
||||||
|
inputs.utils.lib.eachDefaultSystem (system: {
|
||||||
|
devShells = let
|
||||||
|
shells = mapAttrs (_: path:
|
||||||
|
import path rec {
|
||||||
|
inherit tree inputs system;
|
||||||
|
pkgs = inputs.nixpkgs.legacyPackages.${system};
|
||||||
|
inherit (inputs.nixpkgs) lib;
|
||||||
|
})
|
||||||
|
tree.shells;
|
||||||
|
in
|
||||||
|
shells // {default = shells.repo;};
|
||||||
|
})
|
||||||
|
|
@ -1,15 +1,22 @@
|
||||||
{pkgs, inputs, system, ...}: with pkgs; let
|
{
|
||||||
repo = import ../outputs.nix (inputs // { inherit inputs system; });
|
pkgs,
|
||||||
|
inputs,
|
||||||
|
system,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
with pkgs; let
|
||||||
|
repo = import ../outputs.nix (inputs // {inherit inputs system;});
|
||||||
inherit (lib.attrsets) mapAttrsToList;
|
inherit (lib.attrsets) mapAttrsToList;
|
||||||
in
|
in
|
||||||
mkShell {
|
mkShell {
|
||||||
nativeBuildInputs = [
|
nativeBuildInputs =
|
||||||
|
[
|
||||||
deadnix # dead-code scanner
|
deadnix # dead-code scanner
|
||||||
alejandra # code formatter
|
alejandra # code formatter
|
||||||
statix # anti-pattern finder
|
statix # anti-pattern finder
|
||||||
] ++ mapAttrsToList (name: _:
|
]
|
||||||
(pkgs.writeShellScriptBin "${name}-rebuild" ''
|
++ mapAttrsToList (name: _: (pkgs.writeShellScriptBin "${name}-rebuild" ''
|
||||||
darwin-rebuild switch --flake ${toString ../.}#${name}
|
darwin-rebuild switch --flake $REPO_ROOT#${name}
|
||||||
''))
|
''))
|
||||||
repo.darwinConfigurations;
|
repo.darwinConfigurations;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
10
shells/work.nix
Normal file
10
shells/work.nix
Normal file
|
|
@ -0,0 +1,10 @@
|
||||||
|
{pkgs, ...}:
|
||||||
|
with pkgs;
|
||||||
|
mkShell {
|
||||||
|
nativeBuildInputs = [
|
||||||
|
jq
|
||||||
|
k9s
|
||||||
|
terraform
|
||||||
|
awscli
|
||||||
|
];
|
||||||
|
}
|
||||||
29
system/home.nix
Normal file
29
system/home.nix
Normal file
|
|
@ -0,0 +1,29 @@
|
||||||
|
{
|
||||||
|
config,
|
||||||
|
tree,
|
||||||
|
machine,
|
||||||
|
systemType,
|
||||||
|
lib,
|
||||||
|
...
|
||||||
|
}: let
|
||||||
|
inherit (lib.lists) optional;
|
||||||
|
in {
|
||||||
|
home-manager = {
|
||||||
|
useGlobalPkgs = true;
|
||||||
|
useUserPackages = true;
|
||||||
|
sharedModules = with tree;
|
||||||
|
[
|
||||||
|
home.modules
|
||||||
|
home.state
|
||||||
|
]
|
||||||
|
++ optional (tree.${systemType} ? home) tree.${systemType}.home;
|
||||||
|
|
||||||
|
users.kat.imports = with tree; [
|
||||||
|
home.base
|
||||||
|
];
|
||||||
|
extraSpecialArgs = {
|
||||||
|
inherit tree machine;
|
||||||
|
parent = config;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
23
system/nix.nix
Normal file
23
system/nix.nix
Normal file
|
|
@ -0,0 +1,23 @@
|
||||||
|
{
|
||||||
|
config,
|
||||||
|
lib,
|
||||||
|
inputs,
|
||||||
|
...
|
||||||
|
}: let
|
||||||
|
inherit (lib.attrsets) mapAttrs mapAttrsToList;
|
||||||
|
inherit (lib.lists) optional;
|
||||||
|
inherit (lib.strings) versionAtLeast;
|
||||||
|
in {
|
||||||
|
nix = {
|
||||||
|
nixPath = mapAttrsToList (name: flake: "${name}=${flake}") inputs;
|
||||||
|
registry = mapAttrs (_: flake: {inherit flake;}) inputs;
|
||||||
|
|
||||||
|
settings = {
|
||||||
|
experimental-features = optional (versionAtLeast config.nix.package.version "2.4") "nix-command flakes";
|
||||||
|
substituters = ["https://arc.cachix.org" "https://kittywitch.cachix.org" "https://nix-community.cachix.org"];
|
||||||
|
trusted-public-keys = ["arc.cachix.org-1:DZmhclLkB6UO0rc0rBzNpwFbbaeLfyn+fYccuAy7YVY=" "kittywitch.cachix.org-1:KIzX/G5cuPw5WgrXad6UnrRZ8UDr7jhXzRTK/lmqyK0=" "nix-community.cachix.org-1:mB9FSh9qf2dCimDSUo8Zy7bkq5CX+/rkCWyvRCYg3Fs="];
|
||||||
|
auto-optimise-store = true;
|
||||||
|
trusted-users = ["root" "@wheel"];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
7
system/overlay.nix
Normal file
7
system/overlay.nix
Normal file
|
|
@ -0,0 +1,7 @@
|
||||||
|
{inputs, ...}: {
|
||||||
|
nixpkgs = {
|
||||||
|
overlays = map (path: import "${path}/overlay.nix") [
|
||||||
|
inputs.arcexprs
|
||||||
|
];
|
||||||
|
};
|
||||||
|
}
|
||||||
124
systems/default.nix
Normal file
124
systems/default.nix
Normal file
|
|
@ -0,0 +1,124 @@
|
||||||
|
{
|
||||||
|
inputs,
|
||||||
|
tree,
|
||||||
|
lib,
|
||||||
|
...
|
||||||
|
}: let
|
||||||
|
# The purpose of this file is to set up the host module which allows assigning of the system, e.g. aarch64-linux and the builder used with less pain.
|
||||||
|
inherit (lib.lists) fold;
|
||||||
|
inherit (lib.attrsets) mapAttrs mapAttrsToList recursiveUpdate;
|
||||||
|
inherit (lib.strings) toLower;
|
||||||
|
inherit (lib.options) mkOption;
|
||||||
|
inherit (lib.types) str listOf attrs unspecified;
|
||||||
|
inherit (lib.modules) evalModules;
|
||||||
|
recursiveMergeAttrs = fold recursiveUpdate {};
|
||||||
|
defaultSpecialArgs = {
|
||||||
|
inherit inputs tree;
|
||||||
|
};
|
||||||
|
hostModule = {
|
||||||
|
config,
|
||||||
|
machine,
|
||||||
|
...
|
||||||
|
}: {
|
||||||
|
options = {
|
||||||
|
arch = mkOption {
|
||||||
|
description = "Processor architecture of the host";
|
||||||
|
type = str;
|
||||||
|
default = "x86_64";
|
||||||
|
};
|
||||||
|
type = mkOption {
|
||||||
|
description = "Operating system type of the host";
|
||||||
|
type = str;
|
||||||
|
default = "NixOS";
|
||||||
|
};
|
||||||
|
folder = mkOption {
|
||||||
|
type = str;
|
||||||
|
internal = true;
|
||||||
|
};
|
||||||
|
system = mkOption {
|
||||||
|
type = str;
|
||||||
|
internal = true;
|
||||||
|
};
|
||||||
|
modules = mkOption {
|
||||||
|
type = listOf unspecified;
|
||||||
|
};
|
||||||
|
specialArgs = mkOption {
|
||||||
|
type = attrs;
|
||||||
|
internal = true;
|
||||||
|
};
|
||||||
|
builder = mkOption {
|
||||||
|
type = unspecified;
|
||||||
|
internal = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
config = {
|
||||||
|
system = let
|
||||||
|
kernel =
|
||||||
|
{
|
||||||
|
nixos = "linux";
|
||||||
|
macos = "darwin";
|
||||||
|
darwin = "darwin";
|
||||||
|
linux = "linux";
|
||||||
|
}
|
||||||
|
.${toLower config.type};
|
||||||
|
in "${config.arch}-${kernel}";
|
||||||
|
folder =
|
||||||
|
{
|
||||||
|
nixos = "nixos";
|
||||||
|
macos = "darwin";
|
||||||
|
darwin = "darwin";
|
||||||
|
linux = "linux";
|
||||||
|
}
|
||||||
|
.${toLower config.type};
|
||||||
|
modules = with tree; [
|
||||||
|
tree.${config.folder}.modules
|
||||||
|
system
|
||||||
|
];
|
||||||
|
builder =
|
||||||
|
{
|
||||||
|
nixos = inputs.nixpkgs.lib.nixosSystem;
|
||||||
|
darwin = inputs.darwin.lib.darwinSystem;
|
||||||
|
macos = inputs.darwin.lib.darwinSystem;
|
||||||
|
}
|
||||||
|
.${toLower config.type};
|
||||||
|
specialArgs =
|
||||||
|
{
|
||||||
|
inherit machine;
|
||||||
|
systemType = config.folder;
|
||||||
|
}
|
||||||
|
// defaultSpecialArgs;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
hostConfigs = mapAttrs (name: path:
|
||||||
|
evalModules {
|
||||||
|
modules = [
|
||||||
|
hostModule
|
||||||
|
path
|
||||||
|
];
|
||||||
|
specialArgs =
|
||||||
|
defaultSpecialArgs
|
||||||
|
// {
|
||||||
|
machine = name;
|
||||||
|
};
|
||||||
|
})
|
||||||
|
tree.systems;
|
||||||
|
processHost = name: cfg: let
|
||||||
|
host = cfg.config;
|
||||||
|
in {
|
||||||
|
"${host.folder}Configurations".${name} = let
|
||||||
|
hostConfig = host.builder {
|
||||||
|
inherit (host) system modules specialArgs;
|
||||||
|
};
|
||||||
|
in
|
||||||
|
if host.folder == "nixos"
|
||||||
|
then
|
||||||
|
hostConfig.extendModules {
|
||||||
|
modules = [inputs.scalpel.nixosModule];
|
||||||
|
specialArgs = {
|
||||||
|
prev = hostConfig;
|
||||||
|
};
|
||||||
|
}
|
||||||
|
else hostConfig;
|
||||||
|
};
|
||||||
|
in
|
||||||
|
recursiveMergeAttrs (mapAttrsToList processHost hostConfigs)
|
||||||
|
|
@ -1,8 +1,5 @@
|
||||||
_: let
|
_: let
|
||||||
hostConfig = {
|
hostConfig = {tree, ...}: {
|
||||||
tree,
|
|
||||||
...
|
|
||||||
}: {
|
|
||||||
imports = with tree; [
|
imports = with tree; [
|
||||||
nixos.gnome
|
nixos.gnome
|
||||||
];
|
];
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,92 @@
|
||||||
_: let
|
_: let
|
||||||
hostConfig = _: {
|
hostConfig = {tree, ...}: {
|
||||||
|
imports = with tree; [
|
||||||
|
darwin.base
|
||||||
|
darwin.kat
|
||||||
|
];
|
||||||
|
|
||||||
|
security.pam.enableSudoTouchIdAuth = true;
|
||||||
|
|
||||||
|
home-manager.users.root.programs.ssh = {
|
||||||
|
enable = true;
|
||||||
|
matchBlocks = {
|
||||||
|
"daiyousei-build" = {
|
||||||
|
hostname = "daiyousei.kittywit.ch";
|
||||||
|
port = 62954;
|
||||||
|
user = "root";
|
||||||
|
};
|
||||||
|
"renko-build" = {
|
||||||
|
hostname = "192.168.64.3";
|
||||||
|
port = 62954;
|
||||||
|
user = "root";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
nix = {
|
||||||
|
envVars = {
|
||||||
|
"SSH_AUTH_SOCK" = "/Users/kat/.gnupg/S.gpg-agent.ssh";
|
||||||
|
};
|
||||||
|
buildMachines = [
|
||||||
|
{
|
||||||
|
hostName = "renko-build";
|
||||||
|
sshUser = "root";
|
||||||
|
system = "x86_64-linux";
|
||||||
|
maxJobs = 100;
|
||||||
|
speedFactor = 1;
|
||||||
|
supportedFeatures = ["benchmark" "big-parallel" "kvm"];
|
||||||
|
mandatoryFeatures = [];
|
||||||
|
}
|
||||||
|
{
|
||||||
|
hostName = "daiyousei-build";
|
||||||
|
sshUser = "root";
|
||||||
|
system = "aarch64-linux";
|
||||||
|
maxJobs = 100;
|
||||||
|
speedFactor = 1;
|
||||||
|
supportedFeatures = ["benchmark" "big-parallel" "kvm"];
|
||||||
|
mandatoryFeatures = [];
|
||||||
|
}
|
||||||
|
];
|
||||||
|
distributedBuilds = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
homebrew = {
|
||||||
|
brewPrefix = "/opt/homebrew/bin";
|
||||||
|
brews = [
|
||||||
|
"gnupg"
|
||||||
|
"pinentry-mac"
|
||||||
|
];
|
||||||
|
casks = [
|
||||||
|
"utm"
|
||||||
|
"discord"
|
||||||
|
"mullvadvpn"
|
||||||
|
"bitwarden"
|
||||||
|
"deluge"
|
||||||
|
"telegram-desktop"
|
||||||
|
"spotify"
|
||||||
|
"element"
|
||||||
|
"signal"
|
||||||
|
"brave-browser"
|
||||||
|
"disk-inventory-x"
|
||||||
|
"dozer"
|
||||||
|
"firefox"
|
||||||
|
"devtoys"
|
||||||
|
"cyberduck"
|
||||||
|
"docker"
|
||||||
|
"pycharm-ce"
|
||||||
|
"slack"
|
||||||
|
"boop"
|
||||||
|
"obsidian"
|
||||||
|
"contexts"
|
||||||
|
];
|
||||||
|
masApps = {
|
||||||
|
Tailscale = 1475387142;
|
||||||
|
Dato = 1470584107;
|
||||||
|
Lungo = 1263070803;
|
||||||
|
"Battery Indicator" = 1206020918;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
system.stateVersion = 4;
|
system.stateVersion = 4;
|
||||||
};
|
};
|
||||||
in {
|
in {
|
||||||
|
|
|
||||||
74
tree.nix
Normal file
74
tree.nix
Normal file
|
|
@ -0,0 +1,74 @@
|
||||||
|
{inputs, ...}:
|
||||||
|
(inputs.tree.tree {
|
||||||
|
inherit inputs;
|
||||||
|
folder = ./.;
|
||||||
|
config = {
|
||||||
|
# Exclude things that would overlap with namespace things, potentially
|
||||||
|
"/" = {
|
||||||
|
excludes = [
|
||||||
|
"flake"
|
||||||
|
"default"
|
||||||
|
"tree"
|
||||||
|
"inputs"
|
||||||
|
"outputs"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
# Ignore the default.nix we actually use
|
||||||
|
shells = {
|
||||||
|
excludes = [
|
||||||
|
"default"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
systems = {
|
||||||
|
excludes = [
|
||||||
|
"default"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
# Required for all-system common imports
|
||||||
|
system.functor.enable = true;
|
||||||
|
# Re-map home directory profiles
|
||||||
|
home.evaluateDefault = true;
|
||||||
|
# Allow profile importing
|
||||||
|
"nixos/*".functor.enable = true;
|
||||||
|
"darwin/*".functor.enable = true;
|
||||||
|
"home/*".functor.enable = true;
|
||||||
|
# Various modules
|
||||||
|
"nixos/modules" = {
|
||||||
|
functor = {
|
||||||
|
enable = true;
|
||||||
|
external = with inputs;
|
||||||
|
[
|
||||||
|
nix-index-database.nixosModules.nix-index
|
||||||
|
home-manager.nixosModules.home-manager
|
||||||
|
ragenix.nixosModules.age
|
||||||
|
]
|
||||||
|
++ (with (import (inputs.arcexprs + "/modules")).nixos; [
|
||||||
|
base16
|
||||||
|
base16-shared
|
||||||
|
]);
|
||||||
|
};
|
||||||
|
};
|
||||||
|
"darwin/modules" = {
|
||||||
|
functor = {
|
||||||
|
enable = true;
|
||||||
|
external = with inputs; [
|
||||||
|
home-manager.darwinModules.home-manager
|
||||||
|
ragenix.nixosModules.age
|
||||||
|
];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
"home/modules" = {
|
||||||
|
functor = {
|
||||||
|
enable = true;
|
||||||
|
external = with inputs;
|
||||||
|
[
|
||||||
|
nix-index-database.hmModules.nix-index
|
||||||
|
]
|
||||||
|
++ (with (import (inputs.arcexprs + "/modules")).home-manager; [
|
||||||
|
base16
|
||||||
|
]);
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
})
|
||||||
|
.impure
|
||||||
Loading…
Add table
Add a link
Reference in a new issue