Merge branch 'main' of gh:greg-hellings/nixos-config

This commit is contained in:
Greg Hellings
2023-03-07 22:55:05 +00:00
27 changed files with 743 additions and 429 deletions
+1 -1
View File
@@ -1,4 +1,4 @@
#pattern filter=crypt diff=crypt #pattern filter=crypt diff=crypt
**/*.crypt filter=crypt diff=crypt hosts/linode/synapse.nix.crypt filter=crypt diff=crypt
home/ssh/id_rsa* filter=crypt diff=crypt home/ssh/id_rsa* filter=crypt diff=crypt
modules/ssh/id_* filter=crypt diff=crypt modules/ssh/id_* filter=crypt diff=crypt
Generated
+86 -16
View File
@@ -25,11 +25,11 @@
] ]
}, },
"locked": { "locked": {
"lastModified": 1665392861, "lastModified": 1668784520,
"narHash": "sha256-bCd8fYJMAb0LzabsiXl4nxECDoz483bJOCa2hjox7N0=", "narHash": "sha256-gGgVAMwYPPmrfnvnoRi6OkEB5KRsNTb9uYzEceLdO/g=",
"owner": "lnl7", "owner": "lnl7",
"repo": "nix-darwin", "repo": "nix-darwin",
"rev": "ef56fd8979b5f4e800c4716f62076e00600b1172", "rev": "6349b99bc2b96ded34d068a88c7c5ced406b7f7f",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -44,11 +44,11 @@
"nixpkgs": "nixpkgs_2" "nixpkgs": "nixpkgs_2"
}, },
"locked": { "locked": {
"lastModified": 1667610227, "lastModified": 1672274978,
"narHash": "sha256-2olA2HYnz07rjDq3lMqCmDRlSegp1WL4OqR3KSy3Hy4=", "narHash": "sha256-Ui3WNLr/WsXwZ/GM1RI9PuBJj8nKr0DZLkBX/BHpJT4=",
"owner": "bandithedoge", "owner": "bandithedoge",
"repo": "nixpkgs-firefox-darwin", "repo": "nixpkgs-firefox-darwin",
"rev": "78d9f25b7816f5711f80093721cf6618cda3e1c0", "rev": "b147ba53ff19743066e4f8c7c15422e710164b9c",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -57,6 +57,52 @@
"type": "github" "type": "github"
} }
}, },
"flake-compat": {
"flake": false,
"locked": {
"lastModified": 1673956053,
"narHash": "sha256-4gtG9iQuiKITOjNQQeQIpoIB6b16fm+504Ch3sNKLd8=",
"owner": "edolstra",
"repo": "flake-compat",
"rev": "35bb57c0c8d8b62bbfd284272c928ceb64ddbde9",
"type": "github"
},
"original": {
"owner": "edolstra",
"repo": "flake-compat",
"type": "github"
}
},
"flake-utils": {
"locked": {
"lastModified": 1676283394,
"narHash": "sha256-XX2f9c3iySLCw54rJ/CZs+ZK6IQy7GXNY4nSOyu2QG4=",
"owner": "numtide",
"repo": "flake-utils",
"rev": "3db36a8b464d0c4532ba1c7dda728f4576d6d073",
"type": "github"
},
"original": {
"owner": "numtide",
"repo": "flake-utils",
"type": "github"
}
},
"flake-utils_2": {
"locked": {
"lastModified": 1676283394,
"narHash": "sha256-XX2f9c3iySLCw54rJ/CZs+ZK6IQy7GXNY4nSOyu2QG4=",
"owner": "numtide",
"repo": "flake-utils",
"rev": "3db36a8b464d0c4532ba1c7dda728f4576d6d073",
"type": "github"
},
"original": {
"owner": "numtide",
"repo": "flake-utils",
"type": "github"
}
},
"home-manager": { "home-manager": {
"inputs": { "inputs": {
"nixpkgs": [ "nixpkgs": [
@@ -112,11 +158,11 @@
}, },
"nixunstable": { "nixunstable": {
"locked": { "locked": {
"lastModified": 1667991831, "lastModified": 1677932085,
"narHash": "sha256-DHgEsLZI044B9T4AjA3K6+yB9/DqLr4dyA7OIx0FG7o=", "narHash": "sha256-+AB4dYllWig8iO6vAiGGYl0NEgmMgGHpy9gzWJ3322g=",
"owner": "nixos", "owner": "nixos",
"repo": "nixpkgs", "repo": "nixpkgs",
"rev": "872fceeed60ae6b7766cc0a4cd5bf5901b9098ec", "rev": "3c5319ad3aa51551182ac82ea17ab1c6b0f0df89",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -128,11 +174,11 @@
}, },
"nurpkgs": { "nurpkgs": {
"locked": { "locked": {
"lastModified": 1665979830, "lastModified": 1677243766,
"narHash": "sha256-0xcqP+Pr2zeX8A2BpqodcPwN5sR0TfC8twuXUjzG2g4=", "narHash": "sha256-a+2V68cLjb951pYBEGbQGEVBcgti40uWtxTVnzvGFhY=",
"owner": "nix-community", "owner": "nix-community",
"repo": "NUR", "repo": "NUR",
"rev": "704e1ef5bdb1af57b4f7988abf2ef80c897dfc9b", "rev": "9bde3171aeb5954b7955fcb09b231f53caf76b54",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -146,19 +192,21 @@
"agenix": "agenix", "agenix": "agenix",
"darwin": "darwin", "darwin": "darwin",
"ffmac": "ffmac", "ffmac": "ffmac",
"flake-utils": "flake-utils",
"home-manager": "home-manager", "home-manager": "home-manager",
"nixunstable": "nixunstable", "nixunstable": "nixunstable",
"nurpkgs": "nurpkgs", "nurpkgs": "nurpkgs",
"stable": "stable" "stable": "stable",
"wsl": "wsl"
} }
}, },
"stable": { "stable": {
"locked": { "locked": {
"lastModified": 1665927063, "lastModified": 1672580127,
"narHash": "sha256-2oImLqwQqVOQhTXsGUahqrYpe+Pufq+8XTsceYwBfJs=", "narHash": "sha256-3lW3xZslREhJogoOkjeZtlBtvFMyxHku7I/9IVehhT8=",
"owner": "nixos", "owner": "nixos",
"repo": "nixpkgs", "repo": "nixpkgs",
"rev": "8de8b98839d1f20089582cfe1a81207258fcc1f1", "rev": "0874168639713f547c05947c76124f78441ea46c",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -167,6 +215,28 @@
"repo": "nixpkgs", "repo": "nixpkgs",
"type": "github" "type": "github"
} }
},
"wsl": {
"inputs": {
"flake-compat": "flake-compat",
"flake-utils": "flake-utils_2",
"nixpkgs": [
"nixunstable"
]
},
"locked": {
"lastModified": 1678115114,
"narHash": "sha256-O9BmYOgIVuUSU9iEPSW/tmy8T7V6DmQHXudAHw0uDKU=",
"owner": "nix-community",
"repo": "NixOS-WSL",
"rev": "53089d5cc92713ce549ba6ee87ea2b123d6c26e9",
"type": "github"
},
"original": {
"owner": "nix-community",
"repo": "NixOS-WSL",
"type": "github"
}
} }
}, },
"root": "root", "root": "root",
+15 -16
View File
@@ -8,6 +8,7 @@
stable.url = "github:nixos/nixpkgs/nixos-22.05"; stable.url = "github:nixos/nixpkgs/nixos-22.05";
nixunstable.url = "github:nixos/nixpkgs/nixos-unstable"; nixunstable.url = "github:nixos/nixpkgs/nixos-unstable";
agenix.url = "github:ryantm/agenix"; agenix.url = "github:ryantm/agenix";
flake-utils.url = "github:numtide/flake-utils";
home-manager = { home-manager = {
url = "github:nix-community/home-manager/release-22.05"; url = "github:nix-community/home-manager/release-22.05";
inputs.nixpkgs.follows = "stable"; inputs.nixpkgs.follows = "stable";
@@ -16,11 +17,15 @@
url = "github:lnl7/nix-darwin/master"; url = "github:lnl7/nix-darwin/master";
inputs.nixpkgs.follows = "nixunstable"; inputs.nixpkgs.follows = "nixunstable";
}; };
wsl = {
url = "github:nix-community/NixOS-WSL";
inputs.nixpkgs.follows = "nixunstable";
};
nurpkgs.url = "github:nix-community/NUR"; nurpkgs.url = "github:nix-community/NUR";
ffmac.url = "github:bandithedoge/nixpkgs-firefox-darwin"; ffmac.url = "github:bandithedoge/nixpkgs-firefox-darwin";
}; };
outputs = {stable, nixunstable, agenix, home-manager, nurpkgs, self, ...}@inputs: outputs = {stable, nixunstable, agenix, home-manager, nurpkgs, self, wsl, flake-utils, ...}@inputs:
let let
local_overlay = import ./overlays; local_overlay = import ./overlays;
overlays = [ overlays = [
@@ -42,6 +47,7 @@
modules = [ modules = [
{ nixpkgs.overlays = overlays; } { nixpkgs.overlays = overlays; }
agenix.nixosModule agenix.nixosModule
wsl.nixosModules.wsl
./modules-all ./modules-all
./modules-linux ./modules-linux
./hosts/${name} ./hosts/${name}
@@ -61,21 +67,15 @@
in { in {
nixosConfigurations = { nixosConfigurations = {
"2maccabees" = machine { "2maccabees" = machine { system = "aarch64-linux"; name = "2maccabees"; channel = nixunstable; };
system = "aarch64-linux"; jude = machine { name = "jude"; channel = nixunstable; };
name = "2maccabees";
channel = nixunstable;
};
jude = machine {
name = "jude";
channel = nixunstable;
};
"linode" = machine { name = "linode"; }; "linode" = machine { name = "linode"; };
"lappy" = machine { name = "lappy"; }; "lappy" = machine { name = "lappy"; };
"iso" = machine { name = "iso"; }; "iso" = machine { name = "iso"; };
# nix build '.#nixosConfigurations.wsl.config.system.build.installer'
"nixos" = machine { name = "wsl"; system = "aarch64-linux"; channel = nixunstable; };
# nix build '.#nixosConfigurations.wsl-aarch.config.system.build.installer'
"nixos-arm" = machine { name = "wsl"; system = "aarch64-linux"; channel = nixunstable; };
}; };
darwinConfigurations = darwinConfigurations =
@@ -99,12 +99,11 @@
}; };
}; };
defaultPackage."x86_64-linux" = inputs.self.nixosConfigurations.iso.config.system.build.isoImage; defaultPackage = flake-utils.lib.eachDefaultSystemMap (system: inputs.self.homeConfigurations.gui."${system}".activationPackage);
defaultPackage."x86_64-darwin" = inputs.self.darwinConfigurations.C02G48H8MD6R.system;
homeConfigurations = ( homeConfigurations = (
import ./home { import ./home {
inherit nixunstable agenix home-manager overlays; inherit nixunstable agenix home-manager overlays flake-utils;
nixpkgs = nixunstable; nixpkgs = nixunstable;
} }
); );
+4 -4
View File
@@ -1,11 +1,11 @@
builds: builds:
include: include:
- '*.x86_64-linux.*' - '*.x86_64-linux.*'
- '*.aarch64-linux.*'
- nixosConfigurations.* - nixosConfigurations.*
- defaultPackage.x86_64-linux - defaultPackage.x86_64-linux
- homeConfigurations.x86_64-gui - defaultPackage.aarch64-linux
- homeConfigurations.x86_64-nogui - defaultPackage.x86_64-darwin
- darwinConfigurations.* - defaultPackage.aarch64-darwin
exclude: exclude:
- nixosConfigurations.linode # Requires decrypted files - nixosConfigurations.linode # Requires decrypted files
#- nixosConfigurations.2maccabees # Raspberry Pi 4
+36 -14
View File
@@ -2,23 +2,31 @@
nixpkgs, nixpkgs,
overlays, overlays,
home-manager, home-manager,
username ? builtins.getEnv "USER", flake-utils,
... ...
}: }:
let let
home = system: # I'm "greg" everywhere except Darwin where I'm "gregory.hellings"
user = system:
( if ( nixpkgs.lib.hasSuffix "-darwin" system ) then "gregory.hellings" else "greg" );
home = system: username:
if username == "root" then "/root" else if username == "root" then "/root" else
( if ( nixpkgs.lib.hasSuffix "-darwin" system ) then "/Users/${username}" else "/home/${username}" ); ( if ( nixpkgs.lib.hasSuffix "-darwin" system ) then "/Users/${username}" else "/home/${username}" );
mkhome = system: gui: mkhome = {
system,
gui,
gnome,
username
}:
let let
homeDirectory = home system; homeDirectory = home system username;
configDir = "${homeDirectory}/.config"; configDir = "${homeDirectory}/.config";
pkgs = import nixpkgs { pkgs = import nixpkgs {
inherit overlays; inherit overlays system;
config.allowUnfree = true; config.allowUnfree = true;
config.xdg.configHome = configDir; config.xdg.configHome = configDir;
}; };
@@ -26,15 +34,29 @@ let
in home-manager.lib.homeManagerConfiguration rec { in home-manager.lib.homeManagerConfiguration rec {
inherit pkgs system username homeDirectory; inherit pkgs system username homeDirectory;
stateVersion = "22.05"; stateVersion = "22.05";
configuration = import ./home.nix username { configuration = import ./home.nix {
inherit pkgs gui; inherit pkgs gui gnome;
inherit (pkgs) config lib stdenv; inherit (pkgs) config lib stdenv;
}; };
}; };
in {
"aarch64-gui" = mkhome "aarch64-linux" true; in flake-utils.lib.eachDefaultSystem (system: {
"aarch64-nogui" = mkhome "aarch64-linux" false; gui = mkhome {
"x86_64-gui" = mkhome "x86_64-linux" true; inherit system;
"x86_64-nogui" = mkhome "x86_64-linux" false; gui = true;
"x86_64-darwin" = mkhome "x86_64-darwin" true; gnome = false;
} username = user system;
};
gdm = mkhome {
inherit system;
gui = true;
gnome = true;
username = user system;
};
cli = mkhome {
inherit system;
gui = false;
gnome = false;
username = user system;
};
})
+1
View File
@@ -22,6 +22,7 @@
init.defaultBranch = "main"; init.defaultBranch = "main";
push.default = "upstream"; push.default = "upstream";
pull.rebase = "false"; pull.rebase = "false";
tag.sort = "version:refname";
}; };
}; };
} }
+14 -5
View File
@@ -1,10 +1,19 @@
{ pkgs, lib, ... }: { pkgs, lib, ... }:
{ let
home.packages = with pkgs; ( if ( lib.hasSuffix "-darwin" pkgs.system) then darwinPkgs = [];
[] else x86Pkgs = with pkgs; [
[ discord
element-desktop element-desktop
slack slack
]); ];
armPkgs = with pkgs; [
element-desktop
];
in {
home.packages = ( if ( pkgs.stdenv.hostPlatform.isDarwin ) then darwinPkgs else
( if ( lib.hasPrefix "aarch64" pkgs.system ) then armPkgs else
( if ( lib.hasPrefix "x86_64" pkgs.system ) then x86Pkgs else [] )
)
);
} }
+10 -55
View File
@@ -3,74 +3,29 @@
{ {
imports = [ imports = [
./chat.nix ./chat.nix
./gnome.nix
./firefox.nix ./firefox.nix
./terminal.nix
]; ];
home.packages = with pkgs; [ home.packages = with pkgs; [
bazel
bazel-buildtools
bitwarden
cargo # Rustc
cdrtools cdrtools
ffmpeg ffmpeg
gcc
gnucash gnucash
go
gopls
handbrake handbrake
jdk11
libtheora libtheora
onlyoffice-bin
synology-drive-client
vlc vlc
x265 x265
zoom-us ] ++ ( if ( pkgs.system != "x86_64-darwin" && pkgs.system != "aarch64-linux" ) then
] ++ ( if pkgs.system != "x86_64-darwin" then
[ [
jellyfin-media-player jellyfin-media-player
libreoffice
nextcloud-client nextcloud-client
] ] else []
) ++ ( if ( pkgs.system != "aarch64-linux" ) then
[
bitwarden
onlyoffice-bin
synology-drive-client
zoom-us
] else []
); );
programs = {
vscode = let
codepkg = pkgs.vscode-with-extensions.override {
vscodeExtensions = with pkgs.vscode-extensions; [
eamodio.gitlens
file-icons.file-icons
formulahendry.auto-rename-tag
github.vscode-pull-request-github
golang.go
johnpapa.vscode-peacock
jnoortheen.nix-ide
kamikillerto.vscode-colorize
ms-azuretools.vscode-docker
ms-python.python
redhat.java
redhat.vscode-yaml
ritwickdey.liveserver
streetsidesoftware.code-spell-checker
vscodevim.vim
yzhang.markdown-all-in-one
] ++ pkgs.vscode-utils.extensionsFromVscodeMarketplace [
{
name = "vscode-bazel";
publisher = "BazelBuild";
version = "0.5.0";
sha256 = "sha256-JJQSwU3B5C2exENdNsWEcxFSgWHnImYas4t/KLsgTj4=";
}
];
};
in {
enable = true;
# userSettings = {
# "update.channel" = "none";
# "editor.renderWhitespace" = "all";
# "editor.tabWidth" = "8";
# };
package = codepkg;
};
};
} }
+2 -2
View File
@@ -2,7 +2,7 @@
let let
# For now, we ignore this and don't install it # For now, we ignore this and don't install it
ffPkgs = if ( lib.hasSuffix "-darwin" pkgs.system ) ffPkgs = if ( pkgs.stdenv.hostPlatform.isDarwin )
then pkgs.firefox-bin then pkgs.firefox-bin
else pkgs.firefox-wayland.override { cfg.enableGnomeExtensions = true; }; else pkgs.firefox-wayland.override { cfg.enableGnomeExtensions = true; };
@@ -13,7 +13,7 @@ let
in with lib; in with lib;
{ {
programs.firefox = { programs.firefox = {
enable = true; enable = (! pkgs.stdenv.hostPlatform.isDarwin);
package = ffPkgs; package = ffPkgs;
extensions = with pkgs.nur.repos.rycee.firefox-addons; [ extensions = with pkgs.nur.repos.rycee.firefox-addons; [
bitwarden bitwarden
-47
View File
@@ -1,47 +0,0 @@
{ pkgs, lib, ... }:
let
gv = lib.hm.gvariant;
in {
dconf.settings = lib.mkIf ( lib.hasSuffix "-linux" pkgs.system ) {
"org/gnome/desktop/interface" = {
clock-show-weekday = true;
};
"org/gnome/desktop/wm/keybindings" = {
switch-applications = [];
switch-applications-backward = [];
switch-windows = ["<Alt>Tab"];
switch-windows-backward = [ "<Shift><Alt>Tab" ];
};
"org/gnome/nautilus/preferences" = {
default-folder-viewer = "icon-view";
search-filter-time-type = "last_modified";
search-view = "list-view";
};
"org/gnome/shell/window-switcher" = {
app-icon-mode = "both";
current-workspace-only = true;
};
"org/gnome/shell" = {
favorite-apps = [
"org.gnome.Calendar.desktop"
"org.gnome.Nautilus.desktop"
"org.gnome.Console.desktop"
"firefox.desktop"
"vlc.desktop"
];
};
"org/gnome/shell/overrides" = {
attach-modal-dialogs = true;
dynamic-workspaces = true;
edge-tiling = true;
focus-change-on-pointer-rest = true;
workspaces-only-on-primary = true;
};
"org/virt-manager/virt-manager/connections" = {
autoconnect = [ "qemu://session" "qemu://system" ];
uris = [ "qemu://session" "qemu://system" ];
};
};
}
-13
View File
@@ -1,13 +0,0 @@
{ lib, pkgs, ... }:
{
programs.gnome-terminal = lib.mkIf ( pkgs.system != "x86_64-darwin") {
enable = true;
showMenubar = true;
themeVariant = "dark";
profile.default = {
default = true;
visibleName = "greg";
};
};
}
+6 -11
View File
@@ -1,10 +1,6 @@
name: { pkgs, lib, gui, config, ...}: { pkgs, lib, gui, gnome, ...}:
let {
guiImports = if gui then
[ ./gui ] else [];
in {
imports = [ imports = [
./modules ./modules
./ansible.nix ./ansible.nix
@@ -15,9 +11,11 @@ in {
./templates.nix ./templates.nix
./vim.nix ./vim.nix
./xonsh.nix ./xonsh.nix
] ++ guiImports; ] ++ ( if gui then [ ./gui ] else []);
greg.gnome = gnome;
programs.tmux = { programs.tmux = {
enable = true; enable = true;
keyMode = "vi"; keyMode = "vi";
@@ -35,21 +33,18 @@ in {
bitwarden-cli bitwarden-cli
diffutils diffutils
findutils findutils
gh
git git
gnupatch gnupatch
gregpy gregpy
hms hms
htop htop
jq jq
nmap
nano nano
nmap
openssl openssl
tmux tmux
transcrypt transcrypt
unzip unzip
wget wget
yamllint
#yawsso
]; ];
} }
+1
View File
@@ -2,6 +2,7 @@
{ {
imports = [ imports = [
./gnome.nix
./xonsh.nix ./xonsh.nix
]; ];
} }
+62
View File
@@ -0,0 +1,62 @@
{ config, pkgs, lib, ... }:
let
gv = lib.hm.gvariant;
cfg = config.greg.gnome;
in {
options.greg.gnome = lib.mkEnableOption "Enable Gnome support and settings";
config = (lib.mkIf cfg {
programs.gnome-terminal = lib.mkIf ( pkgs.system != "x86_64-darwin") {
enable = true;
showMenubar = true;
themeVariant = "dark";
profile.default = {
default = true;
visibleName = "greg";
};
};
dconf.settings = {
"org/gnome/desktop/interface" = {
clock-show-weekday = true;
};
"org/gnome/desktop/wm/keybindings" = {
switch-applications = [];
switch-applications-backward = [];
switch-windows = ["<Alt>Tab"];
switch-windows-backward = [ "<Shift><Alt>Tab" ];
};
"org/gnome/nautilus/preferences" = {
default-folder-viewer = "icon-view";
search-filter-time-type = "last_modified";
search-view = "list-view";
};
"org/gnome/shell/window-switcher" = {
app-icon-mode = "both";
current-workspace-only = true;
};
"org/gnome/shell" = {
favorite-apps = [
"org.gnome.Calendar.desktop"
"org.gnome.Nautilus.desktop"
"org.gnome.Console.desktop"
"firefox.desktop"
"vlc.desktop"
];
};
"org/gnome/shell/overrides" = {
attach-modal-dialogs = true;
dynamic-workspaces = true;
edge-tiling = true;
focus-change-on-pointer-rest = true;
workspaces-only-on-primary = true;
};
"org/virt-manager/virt-manager/connections" = {
autoconnect = [ "qemu://session" "qemu://system" ];
uris = [ "qemu://session" "qemu://system" ];
};
};
});
}
+32 -155
View File
@@ -10,177 +10,54 @@ let
sha256 = "0hi1c5zv38hwxbyrf11fz97r728jgbppz4is7fwzwhfrzhwbw0ga"; sha256 = "0hi1c5zv38hwxbyrf11fz97r728jgbppz4is7fwzwhfrzhwbw0ga";
}; };
}; };
vim-xonsh = pkgs.vimUtils.buildVimPlugin {
name = "vim-xonsh";
src = pkgs.fetchFromGitHub {
owner = "meatballs";
repo = "vim-xonsh";
rev = "2028aac";
sha256 = "sha256-0+dqtlz8LeyOoSiS12rv8aLdzOMj31PuYAyDYWnpNzw=";
};
};
in in
{ {
programs.vim = { programs.neovim = {
enable = true; enable = true;
viAlias = true;
vimAlias = true;
vimdiffAlias = true;
plugins = with pkgs.vimPlugins; [ plugins = with pkgs.vimPlugins; [
ansible-vim ansible-vim
bufexplorer bufexplorer
coc-cmake
coc-css
coc-go
coc-highlight
coc-html
coc-java
coc-json
coc-lists
coc-markdownlint
coc-nvim
coc-pyright
coc-tslint
coc-vimtex
coc-yaml
context-vim
direnv-vim direnv-vim
fzf-vim fzf-vim
nerdtree nerdtree
vim-airline
vim-gitgutter vim-gitgutter
vim-flake8 vim-flake8
vim-fugitive vim-fugitive
vim-indent-guides vim-indent-guides
vim-packer vim-packer
vim-rooter vim-rooter
vim-xonsh
gruvbox gruvbox
syntastic
]; ];
settings = { extraConfig = builtins.readFile ./vimrc;
background = "dark";
copyindent = true;
expandtab = false;
hidden = true;
ignorecase = true;
mouse = "a";
number = true;
relativenumber = true;
shiftwidth = 4;
smartcase = true;
tabstop = 4;
};
extraConfig = ''
syntax enable
set preserveindent
set softtabstop=0
set nowrap
set showcmd
set cursorline
set lazyredraw
set showmatch
set hlsearch
" Shows non-printing characters
set listchars=tab:\ ,extends:,precedes:,trail:·,eol:¬
set list
" Set filetype to the way I want it
let g:nix_recommended_style = 0
" Highlights bad whitespace
autocmd ColorScheme * highlight ExtraWhitespace ctermbg=red guibg=red
autocmd BufWinEnter * match ExtraWhitespace /\s\+$/
autocmd InsertEnter * match ExtraWhitespace /\s\+\%#\@<!$/
autocmd InsertLeave * match ExtraWhitespace /\s\+$/
autocmd BufWinLeave * call clearmatches()
" Settings for CtrlP
set wildignore+=*.swp,*.pyc,*.class,.tox
" Settings for NerdTree
let NERDTreeIgnore = ['\.pyc$', '\.o$', '\.class$']
" indent guides
let g:indent_guides_enable_on_vim_startup = 1
autocmd! BufWritePost .vimrc source $MYVIMRC
" Tell syntastic to use yamllint
let g:syntastic_yaml_checkers = ['yamllint']
let g:syntastic_yaml_yamllint_args = []
let g:syntastic_shell = "${pkgs.bash}/bin/bash"
" Shortcuts for resolving git diff conflicts
let g:diffget_local_map = 'gl'
let g:diffget_upstream_map = 'gu'
" Key mappings
map <F2> <Esc>\be
map <F4> <Esc>:NERDTreeToggle<Cr>
silent !${pkgs.git}/bin/git rev-parse --is-inside-work-tree
if v:shell_error == 0
map <C-p> :GFiles --cached --others --exclude-standard<CR>
map <C-o> :GFiles?
else
map <C-p> :Files<CR>
endif
map <F6> <Esc>:Files<Cr>
" Allows navigating splits
map <C-j> <C-w>j<C-w><Cr>
map <C-k> <C-w>k<C-w><Cr>
map <C-h> <C-w>h<C-w><Cr>
map <C-l> <C-w>l<C-w><Cr>
colorscheme gruvbox
" ============================================================================
" User functions to just make life easier
" ============================================================================
" Toggle absolute line numbers when we don't have focus, and hybrid when
" we do have it
augroup numbertoggle
autocmd!
autocmd BufEnter,FocusGained,InsertLeave * set relativenumber
autocmd BufLeave,FocusLost,InsertEnter * set norelativenumber
augroup END
" syntax highlighting for Vagrantfiles
augroup vagrant
au!
au BufRead,BufNewFile Vagrantfile set filetype=ruby
augroup END
" Creates the directory for a file if it doesn't already exist.
function! s:MkNonExDir(file, buf)
if empty(getbufvar(a:buf, '&buftype')) && a:file!~#'\v^\w+\:\/'
let dir=fnamemodify(a:file, ':h')
if !isdirectory(dir)
call mkdir(dir, 'p')
endif
endif
endfunction
augroup BWCCreateDir
autocmd!
autocmd BufWritePre * :call s:MkNonExDir(expand('<afile>'), +expand('<abuf>'))
augroup END
" Return indent (all whitespace at start of a line), converted from
" tabs to spaces if what = 1, or from spaces to tabs otherwise.
" When converting to tabs, result has no redundant spaces.
function! Indenting(indent, what, cols)
let spccol = repeat(' ', a:cols)
let result = substitute(a:indent, spccol, '\t', 'g')
let result = substitute(result, ' \+\ze\t', ''', 'g')
if a:what == 1
let result = substitute(result, '\t', spccol, 'g')
endif
return result
endfunction
" Convert whitespace used for indenting (before first non-whitespace).
" what = 0 (convert spaces to tabs), or 1 (convert tabs to spaces).
" cols = string with number of columns per tab, or empty to use 'tabstop'.
" The cursor position is restored, but the cursor will be in a different
" column when the number of characters in the indent of the line is changed.
function! IndentConvert(line1, line2, what, cols)
let savepos = getpos('.')
let cols = empty(a:cols) ? &tabstop : a:cols
execute a:line1 . ',' . a:line2 . 's/^\s\+/\=Indenting(submatch(0), a:what, cols)/e'
call histdel('search', -1)
call setpos('.', savepos)
endfunction
command! -nargs=? -range=% Space2Tab call IndentConvert(<line1>,<line2>,0,<q-args>)
command! -nargs=? -range=% Tab2Space call IndentConvert(<line1>,<line2>,1,<q-args>)
command! -nargs=? -range=% RetabIndent call IndentConvert(<line1>,<line2>,&et,<q-args>)
"""""""""
""" Unused, but kept in case I end up on a system where I can't use my preferred plugins
"""""""""
" Base of search is ordered as
" r - searching up from here to the nearest marker (.git, .hg, .svn, etc)
" a - dir of current file, unless that's a subdirectory of CWD
" c - dir of current file
let g:ctrlp_working_path_mode = 'arc'
let g:ctrlp_switch_buffer = 0
let g:ctrlp_cmd = 'CtrlPMixed'
let g:ctrlp_show_hidden = 1
let g:ctrlp_user_command = {
\'types': {
\1: ['.git', '${pkgs.git}/bin/git ls-files --cached --exclude-standard --others' ],
\},
\'fallback': '${pkgs.findutils}/bin/find . -type f | ${pkgs.gnugrep}/bin/grep -v -e "\.tox/" -e "\.git/"',
\}
" let g:ctrpl_match_func = { 'match': 'pymatcher#PyMatch' }
" map <F6> <Esc>:CtrlP<Cr>
'';
}; };
} }
+304
View File
@@ -0,0 +1,304 @@
set background=dark
set copyindent
set noexpandtab
set hidden
set ignorecase
set mouse="a"
set number
set relativenumber
set shiftwidth=4
set smartcase
set tabstop=4
syntax enable
set preserveindent
set softtabstop=0
set nowrap
set showcmd
set cursorline
set lazyredraw
set showmatch
set hlsearch
set nobackup
set nowritebackup
set signcolumn=yes
" Milliseconds between updates
set updatetime=300
" Shows non-printing characters
set listchars=tab:→\ ,extends:→,precedes:←,trail,eol
set list
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
""""""""""" coc.nnim configuration """""""""""""""""""""""""""""""""""""
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" https://github.com/neoclide/coc.nvim
" Use tab for trigger completion with characters ahead and navigate.
" NOTE: There's always complete item selected by default, you may want to enable
" no select by `"suggest.noselect": true` in your configuration file.
" NOTE: Use command ':verbose imap <tab>' to make sure tab is not mapped by
" other plugin before putting this into your config.
inoremap <silent><expr> <TAB>
\ coc#pum#visible() ? coc#pum#next(1) :
\ CheckBackspace() ? "\<Tab>" :
\ coc#refresh()
inoremap <expr><S-TAB> coc#pum#visible() ? coc#pum#prev(1) : "\<C-h>"
" Make <CR> to accept selected completion item or notify coc.nvim to format
" <C-g>u breaks current undo, please make your own choice.
inoremap <silent><expr> <CR> coc#pum#visible() ? coc#pum#confirm()
\: "\<C-g>u\<CR>\<c-r>=coc#on_enter()\<CR>"
function! CheckBackspace() abort
let col = col('.') - 1
return !col || getline('.')[col - 1] =~# '\s'
endfunction
" Use <c-space> to trigger completion.
if has('nvim')
inoremap <silent><expr> <c-space> coc#refresh()
else
inoremap <silent><expr> <c-@> coc#refresh()
endif
" Use `[g` and `]g` to navigate diagnostics
" Use `:CocDiagnostics` to get all diagnostics of current buffer in location list.
nmap <silent> [g <Plug>(coc-diagnostic-prev)
nmap <silent> ]g <Plug>(coc-diagnostic-next)
" GoTo code navigation.
nmap <silent> gd <Plug>(coc-definition)
nmap <silent> gy <Plug>(coc-type-definition)
nmap <silent> gi <Plug>(coc-implementation)
nmap <silent> gr <Plug>(coc-references)
" Use K to show documentation in preview window.
nnoremap <silent> K :call ShowDocumentation()<CR>
function! ShowDocumentation()
if CocAction('hasProvider', 'hover')
call CocActionAsync('doHover')
else
call feedkeys('K', 'in')
endif
endfunction
" Highlight the symbol and its references when holding the cursor.
autocmd CursorHold * silent call CocActionAsync('highlight')
" Symbol renaming.
nmap <leader>rn <Plug>(coc-rename)
" Formatting selected code.
xmap <leader>f <Plug>(coc-format-selected)
nmap <leader>f <Plug>(coc-format-selected)
augroup mygroup
autocmd!
" Setup formatexpr specified filetype(s).
autocmd FileType typescript,json setl formatexpr=CocAction('formatSelected')
" Update signature help on jump placeholder.
autocmd User CocJumpPlaceholder call CocActionAsync('showSignatureHelp')
augroup end
" Applying codeAction to the selected region.
" Example: `<leader>aap` for current paragraph
xmap <leader>a <Plug>(coc-codeaction-selected)
nmap <leader>a <Plug>(coc-codeaction-selected)
" Remap keys for applying codeAction to the current buffer.
nmap <leader>ac <Plug>(coc-codeaction)
" Apply AutoFix to problem on the current line.
nmap <leader>qf <Plug>(coc-fix-current)
" Run the Code Lens action on the current line.
nmap <leader>cl <Plug>(coc-codelens-action)
" Map function and class text objects
" NOTE: Requires 'textDocument.documentSymbol' support from the language server.
xmap if <Plug>(coc-funcobj-i)
omap if <Plug>(coc-funcobj-i)
xmap af <Plug>(coc-funcobj-a)
omap af <Plug>(coc-funcobj-a)
xmap ic <Plug>(coc-classobj-i)
omap ic <Plug>(coc-classobj-i)
xmap ac <Plug>(coc-classobj-a)
omap ac <Plug>(coc-classobj-a)
" Remap <C-f> and <C-b> for scroll float windows/popups.
if has('nvim-0.4.0') || has('patch-8.2.0750')
nnoremap <silent><nowait><expr> <C-f> coc#float#has_scroll() ? coc#float#scroll(1) : "\<C-f>"
nnoremap <silent><nowait><expr> <C-b> coc#float#has_scroll() ? coc#float#scroll(0) : "\<C-b>"
inoremap <silent><nowait><expr> <C-f> coc#float#has_scroll() ? "\<c-r>=coc#float#scroll(1)\<cr>" : "\<Right>"
inoremap <silent><nowait><expr> <C-b> coc#float#has_scroll() ? "\<c-r>=coc#float#scroll(0)\<cr>" : "\<Left>"
vnoremap <silent><nowait><expr> <C-f> coc#float#has_scroll() ? coc#float#scroll(1) : "\<C-f>"
vnoremap <silent><nowait><expr> <C-b> coc#float#has_scroll() ? coc#float#scroll(0) : "\<C-b>"
endif
" Use CTRL-S for selections ranges.
" Requires 'textDocument/selectionRange' support of language server.
nmap <silent> <C-s> <Plug>(coc-range-select)
xmap <silent> <C-s> <Plug>(coc-range-select)
" Add `:Format` command to format current buffer.
command! -nargs=0 Format :call CocActionAsync('format')
" Add `:Fold` command to fold current buffer.
command! -nargs=? Fold :call CocAction('fold', <f-args>)
" Add `:OR` command for organize imports of the current buffer.
command! -nargs=0 OR :call CocActionAsync('runCommand', 'editor.action.organizeImport')
" Add (Neo)Vim's native statusline support.
" NOTE: Please see `:h coc-status` for integrations with external plugins that
" provide custom statusline: lightline.vim, vim-airline.
set statusline^=%{coc#status()}%{get(b:,'coc_current_function','')}
" Mappings for CoCList
" Show all diagnostics.
nnoremap <silent><nowait> <space>a :<C-u>CocList diagnostics<cr>
" Manage extensions.
nnoremap <silent><nowait> <space>e :<C-u>CocList extensions<cr>
" Show commands.
nnoremap <silent><nowait> <space>c :<C-u>CocList commands<cr>
" Find symbol of current document.
nnoremap <silent><nowait> <space>o :<C-u>CocList outline<cr>
" Search workspace symbols.
nnoremap <silent><nowait> <space>s :<C-u>CocList -I symbols<cr>
" Do default action for next item.
nnoremap <silent><nowait> <space>j :<C-u>CocNext<CR>
" Do default action for previous item.
nnoremap <silent><nowait> <space>k :<C-u>CocPrev<CR>
" Resume latest coc list.
nnoremap <silent><nowait> <space>p :<C-u>CocListResume<CR>
"
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
""""""""""" END coc.nnim configuration """""""""""""""""""""""""""""""""
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" Set filetype to the way I want it
let g:nix_recommended_style = 0
" Highlights bad whitespace
autocmd ColorScheme * highlight ExtraWhitespace ctermbg=red guibg=red
autocmd BufWinEnter * match ExtraWhitespace /\s\+$/
autocmd InsertEnter * match ExtraWhitespace /\s\+\%#\@<!$/
autocmd InsertLeave * match ExtraWhitespace /\s\+$/
autocmd BufWinLeave * call clearmatches()
" Settings for CtrlP
set wildignore+=*.swp,*.pyc,*.class,.tox
" Settings for NerdTree
let NERDTreeIgnore = ['\.pyc$', '\.o$', '\.class$']
" indent guides
let g:indent_guides_enable_on_vim_startup = 1
autocmd! BufWritePost .vimrc source $MYVIMRC
" Tell syntastic to use yamllint
let g:syntastic_yaml_checkers = ['yamllint']
let g:syntastic_yaml_yamllint_args = []
let g:syntastic_shell = "${pkgs.bash}/bin/bash"
" Shortcuts for resolving git diff conflicts
let g:diffget_local_map = 'gl'
let g:diffget_upstream_map = 'gu'
" Key mappings
map <F2> <Esc>\be
map <F4> <Esc>:NERDTreeToggle<Cr>
silent !git rev-parse --is-inside-work-tree
if v:shell_error == 0
map <C-p> :GFiles --cached --others --exclude-standard<CR>
map <C-o> :GFiles?
else
map <C-p> :Files<CR>
endif
map <F6> <Esc>:Files<Cr>
" Allows navigating splits
map <C-j> <C-w>j<C-w><Cr>
map <C-k> <C-w>k<C-w><Cr>
map <C-h> <C-w>h<C-w><Cr>
map <C-l> <C-w>l<C-w><Cr>
colorscheme gruvbox
" ============================================================================
" User functions to just make life easier
" ============================================================================
" Toggle absolute line numbers when we don't have focus, and hybrid when
" we do have it
augroup numbertoggle
autocmd!
autocmd BufEnter,FocusGained,InsertLeave * set relativenumber
autocmd BufLeave,FocusLost,InsertEnter * set norelativenumber
augroup END
" syntax highlighting for Vagrantfiles
augroup vagrant
au!
au BufRead,BufNewFile Vagrantfile set filetype=ruby
augroup END
" Creates the directory for a file if it doesn't already exist.
function! s:MkNonExDir(file, buf)
if empty(getbufvar(a:buf, '&buftype')) && a:file!~#'\v^\w+\:\/'
let dir=fnamemodify(a:file, ':h')
if !isdirectory(dir)
call mkdir(dir, 'p')
endif
endif
endfunction
augroup BWCCreateDir
autocmd!
autocmd BufWritePre * :call s:MkNonExDir(expand('<afile>'), +expand('<abuf>'))
augroup END
" Return indent (all whitespace at start of a line), converted from
" tabs to spaces if what = 1, or from spaces to tabs otherwise.
" When converting to tabs, result has no redundant spaces.
function! Indenting(indent, what, cols)
let spccol = repeat(' ', a:cols)
let result = substitute(a:indent, spccol, '\t', 'g')
let result = substitute(result, ' \+\ze\t', ''', 'g')
if a:what == 1
let result = substitute(result, '\t', spccol, 'g')
endif
return result
endfunction
" Convert whitespace used for indenting (before first non-whitespace).
" what = 0 (convert spaces to tabs), or 1 (convert tabs to spaces).
" cols = string with number of columns per tab, or empty to use 'tabstop'.
" The cursor position is restored, but the cursor will be in a different
" column when the number of characters in the indent of the line is changed.
function! IndentConvert(line1, line2, what, cols)
let savepos = getpos('.')
let cols = empty(a:cols) ? &tabstop : a:cols
execute a:line1 . ',' . a:line2 . 's/^\s\+/\=Indenting(submatch(0), a:what, cols)/e'
call histdel('search', -1)
call setpos('.', savepos)
endfunction
command! -nargs=? -range=% Space2Tab call IndentConvert(<line1>,<line2>,0,<q-args>)
command! -nargs=? -range=% Tab2Space call IndentConvert(<line1>,<line2>,1,<q-args>)
command! -nargs=? -range=% RetabIndent call IndentConvert(<line1>,<line2>,&et,<q-args>)
"""""""""
""" Unused, but kept in case I end up on a system where I can't use my preferred plugins
"""""""""
" Base of search is ordered as
" r - searching up from here to the nearest marker (.git, .hg, .svn, etc)
" a - dir of current file, unless that's a subdirectory of CWD
" c - dir of current file
let g:ctrlp_working_path_mode = 'arc'
let g:ctrlp_switch_buffer = 0
let g:ctrlp_cmd = 'CtrlPMixed'
let g:ctrlp_show_hidden = 1
let g:ctrlp_user_command = {
\'types': {
\1: ['.git', '${pkgs.git}/bin/git ls-files --cached --exclude-standard --others' ],
\},
\'fallback': '${pkgs.findutils}/bin/find . -type f | ${pkgs.gnugrep}/bin/grep -v -e "\.tox/" -e "\.git/"',
\}
" let g:ctrpl_match_func = { 'match': 'pymatcher#PyMatch' }
" map <F6> <Esc>:CtrlP<Cr>
+25 -20
View File
@@ -21,25 +21,6 @@ let
]; ];
extraConfig = builtins.concatStringsSep "\n" [ extraConfig = builtins.concatStringsSep "\n" [
"expand-hosts"
"domain=thehellings.lan"
"log-dhcp"
"log-queries"
"addn-hosts=/etc/adblock_hosts"
# "dhcp-range=eth0,10.42.0.1,10.42.1.255,255.255.0.0,static"
"dhcp-range=eth0,10.42.2.1,10.42.2.255,255.255.0.0,12h"
"dhcp-option=eth0,option:router,10.42.1.1"
"dhcp-option=eth0,option:dns-server,10.42.1.2,1.1.1.1"
"dhcp-option=eth0,option:domain-search,thehellings.lan"
"dhcp-range=vlan66@eth0,192.168.66.3,192.168.66.150,255.255.255.0,12h"
"dhcp-option=vlan66@eth0,option:router,192.168.66.1"
"dhcp-option=vlan66@eth0,option:dns-server,192.168.66.2"
"dhcp-range=vlan67@eth0,192.168.67.3,192.168.67.150,12h"
"dhcp-option=vlan67@eth0,option:router,192.168.67.1"
"dhcp-option=vlan67@eth0,option:dns-server,192.168.67.2"
]; ];
in in
{ {
@@ -47,10 +28,34 @@ in
services.dnsmasq = { services.dnsmasq = {
enable = true; enable = true;
# Public AdGuard DNS servers # Public AdGuard DNS servers
servers = [ settings = {
domain = "thehellings.lan";
dhcp-range = [
# "eth0,10.42.0.1,10.42.1.255,255.255.0.0,static"
"eth0,10.42.2.1,10.42.2.255,255.255.0.0,12h"
"vlan66@eth0,192.168.66.3,192.168.66.150,255.255.255.0,12h"
"vlan67@eth0,192.168.67.3,192.168.67.150,12h"
];
dhcp-option = [
"eth0,option:router,10.42.1.1"
"eth0,option:dns-server,10.42.1.2,1.1.1.1"
"eth0,option:domain-search,thehellings.lan"
"vlan66@eth0,option:router,192.168.66.1"
"vlan66@eth0,option:dns-server,192.168.66.2"
"vlan67@eth0,option:router,192.168.67.1"
"vlan67@eth0,option:dns-server,192.168.67.2"
];
expand-hosts = true;
log-dhcp = true;
log-queries = true;
addn-hosts = "/etc/adblock_hosts";
server = [
"94.140.14.14" "94.140.14.14"
"94.140.15.15" "94.140.15.15"
]; ];
};
extraConfig = "${extraConfig}"; extraConfig = "${extraConfig}";
}; };
environment.systemPackages = [ pkgs.curl ]; environment.systemPackages = [ pkgs.curl ];
+2
View File
@@ -17,6 +17,8 @@ in
"eufy" "eufy"
"lovelace" "lovelace"
"nextcloud" "nextcloud"
"smart_meter_texas"
"solaredge"
"tplink" "tplink"
"wiz" "wiz"
"zwave_js" "zwave_js"
+103 -12
View File
@@ -1,12 +1,103 @@
U2FsdGVkX18oPFqz6C36wMep7NFLW1+gHEgSX2ltuQVRFUV5inWVu20TxSbwr5Lf wiV9gcByMQdGcJaEbp1+L7NUd1KjtZYonTH/PcWspz0qJqLaHBA4XlMPAxVZweNE
51sP6mT8A88DoTkUaKMiUdeDF5kRpi9534ZZ2WocW5Vax5DsAo3uAA6xP3DX+Ple IVoksuKu8A9FYVGzLgXN33Fwf7N3Uvju5CfXSxcemYsk18R13Eii9mgYeqeeUL4Q
ADjJZzGyMJB9Wu8vYwLARS24gYENTThP03Cx8JpwgcijulZGRtN3ud7JMnWCE1Wu jboEAceQsIQHPk+sZKRgNDLfUjiVoL3aVHfL3LaeJtuXna72d+FFiAZvIPs13L3E
rrppjy3L2VXi/ewsfvIH8kD15sixUPQ80eb1Q1ZESDNVCunmVjOTclnVaMoX4iuE JgbdFoSpeB0/TCEzOz1Vbpn5533lRKPQ4UHwi8ReB7X+drV1NEpIGuGi/1Q1ROrQ
D/irD5JsbAN5f7Gn65vEMlNy5cl7pP8Jn5PWYj6dXFpq7h+MXX2lW2D3hoQKkXcE E1OdFaQVRDf1Xj1ckrfPGAt0TBahVTNepViFbcgXNN+1N/4kk4p04yzoTjK4tMpT
nSIJ4KUdgiSVXO3f673t5fOvvcjOkyB+hAdPXJo70/i7opvJf+aqxtHnit3dIlBp 8213bmcJCbSu63foI0+MY1Sy5pRLf40AI1p4yHRVHtqpKH7VRdWcG8mddcQZRQRs
Kx0cy2v+1Rp5cYvM2Rp95vZOKsmYwDxtu3ef+MKdyrCxViqb44jXraUQzKR2CX46 HGXB6ikOhRwrI/PIfKoqZ3jKDjWs5kAp11xZwzG2ntU1qUk5tkDpxyjnsi+yfABm
bb2IO1q2MZ3XkSAS3+zCe4ze6EISiUkC0d0ISL+Zx+09MLCliL+LmvIxD4vv7KnQ BHWZU9mDgyLm8BOS3H1L8wDjrksI2zwlCKFkgspugljf1uTzcYEU72xLlzntINnZ
rxzeJAYsKVB8kQrgTtdvthHrgfBpyC0b9IIfYX0AZz1Xb/AN4K4H2RJXN1JMIWq3 V2wea5B2DDuBtf3Lv20OKwLPbErEqvRbZogxTOLMKR5BqYz9kRbuv1hiRiVWat+h
K0SIAbG+2tyPuE28kHfQap1WYJJf+Y0S3dkskV+vDctQ2Ac3qR9pzIeb+kOoflhV VP3mGh3vhu7Ty1YzEu7OEoJw0Skm4kJTj+zFr8L7mdOZb6fkfh4SRtYjsxiMQsC9
7EwuSDbpYrby5NVFH55b1gm4iZdU7BpScCSyOd1ku5Tv5lFnuihCKd93qh4J2jU1 Vbg0wkXwbDrVR3Vt8f3BvBkl6oicwlveDQCWsbSDlG3OOxiuXdWPUf9fd54BH7ln
1qwm6uI3ao+ZeiJuweXIs1hG75IPhxcDhiynbrZOH08kLnMj6hCPxj9rjPWQS2Sg 9jG19nov1M0wj1tI1mu1jVKaNlVJyw5YTUl4pKb5HeXqo+pElH4N3mn8JrxNVauK
843aHqPLuMXuNyyue6FO/w5eIXtHIHAzdzSW0vw9WtyPqC3TllONWxB/U1YMUzLt
RldYK+tHVlBapN1hQdee44ylTCFCFnLN+0Zxk/fygzvMOvZeCGZ0ukhHN9MiLGbz
PoU0NK8bbJ/Lgr9IHOe33kR6aAbw1L9qfXaLwReFb//bayUQUrsHtBI6HYisStC2
TRNr9nBiAVWtggpJX7NegvMknd5BMf18Y/Bw18cY6UiCj4+JWzvM+cxh1dnw8GAj
14Nz6eMUdVeVsgYmQV0KzZrwboTgkjD16yS9gpTnoT1KjZLvUGNLt24FK/GmWLs4
LlJEds+wse7CPu65qo7FQ+bKRngKwdu6BN/yR6rnoBgkGy+LIf8TKaFpePpkQvsn
nTQzN0eaiXPpyG5i6eFFFbToUtK44DJjzf5BgAiE110fM3mgjfoPoqlPqnFwKRWg
KYbZv92rfBVuVXq8p6w4mu+pAQ0Ua9jTHik08jZbqR8By1ICBnsDiJpJWuQXrRJF
DI+xCIe3ueYkitXOJrluHckczNiDLNrpKppiNjNufJfgtvCN+uxmMstk6+1H6ZLN
kM9Ut/3dUV1pLwTaBVe+/tuO06Cmz3LXe4S2Ix3i4ik3Z627TVAuaTXQBoLa9+PO
0FJ4p4TcBO5Qs5tXa5EiiMT/+G2d9pFJLu1xFRIBxqeG903hGCy82hgcM6tYcSwW
rnuIRGZbrB1ErdvNkNZyD7TPJAQuth692kGBYTwTJHnFY8iBFGU8oOseWlOGGO1E
fngrp4wzPdrVKhTr3Yj7VjhCMuxVhBxOuk31x9b1NprsyI7/6LHNM3Xpdl0uGXBD
DZa/gRMuuw6vRX2QEUDWWAUIATsrvwuFEyihENXyk2+0LsLzrf8+awqXsiDb0mqX
4Kl3fuDdDb1acpPJ8hyqJYgD6hS5gBUhcbtcs5ICFjea/7TrKzM1UXncb5vVk+YX
u+IgB7313GiCznvXf/KO+5NXd45jL4b+PNfFi30wVSjQh55GN39iBhh0m8sSYIAv
J8g6wD6faoD43bECzOcsejZh5bmcPt7NM+aDts4UyOKNnnEXQtgu80w8uQsewZw4
wXtbxcGjIN1ckzlxdaxoOmm3dAAhppvtp04MiI/vFVNSX31+D8qqTgUnEqCq2EZG
hqskZP2hIjdge9CzlOSrPMd/IN9pxyhyfa3+0nFp1oi0FxzAwxAyTcXt14KaDkHm
rOcBLmyn9edUqcX0w5snFkf64gcI1p/akWanFDiInHo4jSy3ioQKP5oSbgdWz+FG
roqSvgRSG0dGVaAlg0VLMx9WfmovLDObYlIyWxpMr2aiy1VGezJr7AAK5KRaO22O
b65sJgG+o4EYTsd4Bp1jRdm47GTzuRp8W+oUVh72UNmvIkawoHVxrvp7vaEhgZDA
aAPT0sYwyNqKumnGibWKYDH1isXKgbftC4iiA8onSRirCPL731mz9pWMWFam0bfi
u6o4W3/1qsxb42WrYXab/LiCC1HUPI0MLJM4mTMepnJNLCP0QD+YoyZg/vnBmbe0
SDLjoe82AhVgZ/wP5tPnDxFEs7/KVaAW/iwRL7EdWiSm2d+oVMT6eE3eI6pCzga8
iAnVQyeCtBJhpQYIutqqHJLSSt+C/Rg3r9KMMAt4dF/LDsLOtyHfSMe3BkDkTA0g
/eM/LpZDdQzSGjHY/IFeKjn6BbbV0GvsvE83uj7x/7QT5rLjQP/qonvDSLMFLN7U
M7RkvlCWdNB3x53xHTFOoNI6vjzY578AKfq5U6l8C5br6hIK+7vr1iGSbd0WcRmy
qpOZ9TGwAEkMPFXDoJtRooeptje84oA+vTem4PYBU8kxPtGFhrEirnt51zyj751h
BI0GDNu0MAzBZdiWp33/hkPnR4bdgAZrw3loGAKdRlBXcJhxXq/U9fotBkfvbccs
7DB9ruQX1vMnMBrtiCf+pk1JkCqxbx8sDQv0+cDYiorcAITKvZj/gybwThJkPeVm
TAyKqy6uTpwi7mwXxt6JMVbJGANz/kpYHuVSL4GjaOlfcri5wSF6EObMpALsEf/8
GDu/2/Lz81N+0MY5AESqf9Hkj9a2HochAXo2MoXqtIF2GrCwrWYYSKjnQ0/TLYWD
lLBurqYA2sWARQkSwmLddUwb/q6hq8aGGrOBUbb5oju2ZmpvFVmE/bx+7hHg+MCX
79T+ZIffQQvNccAoQ5ERQCAYppZ9boa5jX6sNrBfXB0EiHP24Gfw0A15faWXlYNX
D289RtqCUbcPv40MKLAntc2NMz3q+EqpcR7WHuJM5WBxWt95hr/o+Di5qFAjwtun
SzuQz//yA78c6Tm5PuDBPJXHJ1UUnQo9k1qDUGEcVTVgOqO5VM2/maShrQ3POOjT
Bljn6eZE5bg31P+ARy8Dkal1TB0WMqAivDeSeDT0qX48BGH4xVjXRT6EaNQOAfkG
ZN9eWy0OlWZM0+V3McQDoCTLyqwns4/Ijt3FvBcbI+ZWNGD9z1I9WIWYOnh6ioNH
Xk1/2Bq3I8n5YgEdH5zMnQCKqzblp3lK3CRbFQpqzN65SVZdP+MyrCdKVmmb7OK6
q0KCtDwhF/jgDqVsmYOKxROza3fuAMJrd/FwHluhtoQciVt9yGc5A+FhIFSTMT8k
lEmTsX4GjtPhHZgz9NTpRwwlzQzWKBK8nUxgZK4lLRifjcbeIxQ+so8RRYXo+13u
oNQX/cGaOP2zlEK00XdEw16+O+vgdu53uyN1mxOkn8eqQs/dpM75v+6pBv+wihce
UNsGevGolmQtmP62oXz7tQFS+krjFNwaHijJF6MrAID8d6Vn+yHt+MiBzRKLLoK/
9b6K0mtgRH2ncO6hzlqt6RzOqqHGIqS/RxCu+PdX8KMolsafSg80Kv5fa+NGgoVn
Ap3VlNObd9rS+8GSmMd+kQQqVF+lDy9/zdG2Tpgx+qy5+b/17V9QMvFudfj8qeAP
/uPWUx4b8TlAx2LmLBzRstMCkyTg8LSSsrjFoCjX0hrX++qzFkCtl9Y+9sPWu1p8
c9GZt/1yXpRwHyGi44iExiDj8BOFtd+hfypyAlZu8J3Eszt7XjqvoyEcaIs+st3q
vGGrDh7p3xwptw4hhCiIXebbjopxg+QjJJGIQtzI2STgXp4DOn+1HvMyu3UT3NBm
MRjNJ5wRt9LeyAXvDh/pVQtMhpqBTJS2+Luq1gXY3q8CBa++ydX3drrnkRLaTfr7
bIjqp6Idja7cq+J0RjxVLblUOw1aVlYH1jHhkkX4PPPb/nI1Swe0rFm3OQ5jrkBt
6zDv/mcqMnMTwBXSA3rcEECv5pb+cvOXme21cbs0xQJAVqHmmnI4wGU7RzGvSOp6
J0fIJnkRI6dQU60ndyK+9AeyCygfYAvy5aqLS+LLkJeftR3XYBsx6rNQzKESZuY9
Zwobcz4GAQQy6c7MvELBBcIHvb70IBVrd2boeAgsSAgsx/Ez/NyoVdlUxYtNzZhX
cMqeHXereDsAsxHuY0cqEOPUXlqC2Yy88F6jnQXsvYKASynlcSFb4NCRzXlmCUa9
A2UUrv4P2pL1+D0tfGQw0k7AmHDfiJoTQVGRrmcRqgmj6hPEQoDlp6Wc7D/lz4ZO
jsgHzBEhUzYxY23XeT4P2rK6YBG/u602rMBi0ilimdN6Cw/5nGtMb5fHXZn/ot1K
MHZ4r4D/5jr4gYpjJsYnCah52JYDSt2/Dyx0nQXdPLIRhB/aYoRxlkqxODNws9kz
TE11SqOS7K56+wE0C7EuEsIyBsYRzeTHoZwY8dWrroFX9ksM4fphKVzbDmB3w5CQ
68s72Qu1/xgQtyM9e14OZ9AUl6UytHjIwEWPBSFzlSDSZbAVkHonMqIwhti30bEA
8zzSbD8oYiK0xyeOxdAA1dm18sxI0MhA4gi5kPadE94tilU1CYBfIPnMIxi1qz8G
PRgwVDoOifLo8VWJlcsksxkb//tMQsupOrj/RaVWcjbVrNwQH8f/i/psLhZbGx7d
ZMCSoSqNPXj1dTs7N/7dZuCzzBmQHhiPuc0wC9BHzvcpznOrhAXrDasEwZLpFyyk
A038DUaaANEKL4cNtH7xZSzVBc8rSRLM+Xh/9MoY/fJJye8s+fb6WHatUqKDXBut
un8cupSVkMIywgrcQaVtwC9T0aVuhyUfwKiiRKV+/ET2fhN6ctBI92QyAtTwV40G
uIYtxMjJ74xRKN2aodbyY6I/OuVSklj6pED+BS3L+j4l0uIO4tDyrMXS0+hUqMLu
XnFjtrYL7ZtnFSUBHE9Y5lAaJIFMR03Kb20zGEOAODYjh8DmBm8dyt+hMEUAnreT
pO7wI0sP93teVok5BAw5bZMInDOqphDRl+szDHdw5mi0b+g+nvHYo6690TlkFePk
q1eH+NQP+OBkwc6+pd0TgC/g4edh4VhSgftST6UzdnP68yWhtz3i/v6RGPen8QXP
iOG19PUmebKzgSArGBUquZKwgN4Hhw8hfF+MDH2DS/Ih1+qG1KHbIcTELahZLitI
k7pCKRB9Izv+ndQUpf82o0Kpw6lC1jBoLbHtf2hxWkStDBmo5vvaZo8lRQRoDLwn
dHwUH/d3Mt2C/4e+Cc6aryTQb2aKD/q0ExbwZRkpYjI5Z59Omdn2vhmpFS0zbcft
YktnSVJWABNdycrG8yvmavufQkdPN4TSEPVgdpYikI4dtWENRIrfwKWyksQ6d/Y2
15zY1Z2ckQboEkQaoHiR2qZSgUkugIpMeAiA2ez/PkR8/Fdk8Ag0xGE9S0WHBf2O
76Z/AMlJo7Uze0MlDgpe/En5i/hCqxtewE7j+2QgAOsKSH+/ASRhT4KkDwUSxrrc
S1Xy5wLKOL29tOe3JDN4geBibJCmL1Tix3YFGs8fSQyQDbxmJByxxl6ea2OmiGlr
Nh+62mPrAehsyYBfoAvvcEim8iyPk4lldyfW6tR3PCz/I0gTKK5K5h/cMbDKdgq8
APHfv1Y39fgNGnzGAjqcZHvUtxvSqs1n8tqGdht9wubkrLmiwTk/l+mRJ9RJJ3Dc
YTgAI4D1mnl6RfWjP55Prx9FTqy/y17FmLobcwsK1bkjsrCebFvh1es3JHCgArxb
KgkPfbe9h7l1K/khDWLdSvXPHfTeTbKio/5H0O56z9fYZgPfR1fxOKpRKv8v7j6m
VRFDToXd2KWcT0gzbdhp29kU7N6I9MMdBDyIxczhqfqm/387jzLPujEsU6rDa42y
bTgeeONDJhA+JVUrqLHd8qZPjC5sN2hJ0aRGdRXpEwPj/naQN2G5F0MPcGmYRmm7
1lLJD0JD08U26ONbX5uWZKOgBmNZyF+jMdX6AHtSlF0qJyCN6Kdiu3RIIrsa52Rq
eGkFVBH3hznyiriM9CgISYhNCIsT+MxL0fUb974OY7ykhP1jD00LWKHVumUsGdV2
s4k+9LAzOquTmlhKTOh85asLSfPqT0m5r6UQ3JXPdRFlCdyww/+sXZ2ds3bwkS5B
djP0OAqRxC2kIxGIWfQcfAs4dOAVCnlM+MHa18K4ztySoxnnOBs7Y2fUbraGnQpp
Q9cwVLa0h0dxvN8aIL765kXtTln8qLK/5kgfuLXqHWucfSj7IdIgRyexql7oQfH2
VBTk18bQQNLmFo7Fp5pi3soe0OF76j5wLUJD/rCm5nXsvxpICll6Zk7ESehnMPTV
k93Hi/jyHRLVUDxibNFBjoPKLRxEOFyNTVrHhT+NaetENFj4gWPfeMOq1jf9auEn
+0DLpO7zqO7dNbMHKTwRziRxu2S5flgNj4nwhO81iXqrIAZ3vi1k7QqXf009kl6X
ksyTVqvLxP73CCujwch/+g==
+10
View File
@@ -0,0 +1,10 @@
{ pkgs, ... }:
{
wsl = {
enable = true;
wslConf.automount.root = "/mnt";
defaultUser = "greg";
startMenuLaunchers = true;
};
}
+11
View File
@@ -4,6 +4,17 @@
# Enable flakes # Enable flakes
nix = { nix = {
package = pkgs.nixFlakes; package = pkgs.nixFlakes;
buildMachines = [
{
hostName = "dns.me.ts";
system = "aarch64-linux";
}
{
hostName = "jude.me.ts";
system = "x86_64-linux";
}
];
settings = { settings = {
experimental-features = "nix-command flakes"; experimental-features = "nix-command flakes";
+1
View File
@@ -14,6 +14,7 @@
hms # My own home manager switcher hms # My own home manager switcher
home-manager home-manager
htop htop
killall
nano nano
pwgen pwgen
transcrypt transcrypt
-1
View File
@@ -1 +0,0 @@
modules
-1
View File
@@ -2,7 +2,6 @@
{ {
imports = [ imports = [
./syncthing.nix
./users.nix ./users.nix
]; ];
} }
-46
View File
@@ -1,46 +0,0 @@
{ ... }:
let
syncs = [
"nas"
"dns"
"linode"
];
in
{
services.syncthing = {
enable = true;
user = "greg";
group = "users";
dataDir = "/home/greg/sync";
devices = {
nas = {
addresses = [
"tcp://nas.thehellings.lan:22000"
"tcp://chronicles.greg-hellings.gmail.com.beta.tailscale.net:22000"
];
id = "74JUTZG-77EPGO3-FEYCL2P-CHDWP5G-6EXWZVB-XTAH6O5-TUXCVY2-QNRHSQ4";
};
dns = {
addresses = [
"tcp://dns.thehellings.lan:22000"
"tcp://2maccabees.greg-hellings.gmail.com.beta.tailscale.net:22000"
];
id = "C4XJCH7-3ZNW6XZ-R5DB2EU-OEGVVT2-WPHQAG7-UDWER36-6NO5KZR-4MN5VAK";
};
linode = {
addresses = [
"tcp://linode.thehellings.com:22000"
];
id = "ROZPUG5-G4IAXYA-JNRQXRD-5PFU2BQ-WVJTOGZ-DFMGJ5E-Q4IGXCJ-JHSNDQ6";
};
};
folders = {
"mkrvy-tc6x9" = {
path = "/home/greg/drive";
enable = true;
devices = syncs;
};
};
};
}
+3
View File
@@ -11,6 +11,9 @@ let
dateutil dateutil
flake8 flake8
ipython ipython
jedi
mypy
pylint
pyyaml pyyaml
responses responses
ruamel-yaml ruamel-yaml
+11 -7
View File
@@ -6,22 +6,25 @@ arch="$(uname -m)"
if [ "$(uname -s)" == "Darwin" ]; then if [ "$(uname -s)" == "Darwin" ]; then
# On macOS # On macOS
src="${HOME}/.config/nix/" src="${HOME}/.config/nix/"
target="${arch}-darwin" flavor="gui"
elif [ x"${WSL_DISTRO_NAME}" != "x" ]; then
src=/etc/nixos
flavor="cli"
else else
# On Linux/WSL2 systems # On Linux systems
if [ -z "${DISPLAY}" ]; then if [ -z "${DISPLAY}" ]; then
target="${arch}-nogui" flavor="cli"
else else
target="${arch}-gui" flavor="gdm"
fi fi
src=/etc/nixos src=/etc/nixos
fi fi
# Build and switch # Build and switch
echo "Building ${target}" echo "Building ${flavor}.${arch}"
dest=$(mktemp -d) dest=$(mktemp -d)
pushd "${dest}" > /dev/null pushd "${dest}" > /dev/null
nix build --impure "${src}#homeConfigurations.${target}.activationPackage" nix build "${src}#homeConfigurations.${flavor}.${arch}.activationPackage"
./result/activate ./result/activate
popd > /dev/null popd > /dev/null
rm -r "${dest}" rm -r "${dest}"
@@ -30,9 +33,10 @@ if [ "$(uname -s)" == "Darwin" ]; then
cd ~/.nix-profile/Applications cd ~/.nix-profile/Applications
for app in *.app; do for app in *.app; do
echo "Updating permissions on '${app}'" echo "Updating permissions on '${app}'"
mkdir -p "${HOME}/Applications/${app}"
chmod -R u+w "${HOME}/Applications/${app}" || true chmod -R u+w "${HOME}/Applications/${app}" || true
echo "Copying new version to Applications" echo "Copying new version to Applications"
cp -r "${app}" "${HOME}/Applications" 2>&1 > /dev/null || true rsync -rptgoDv "${app}/" "${HOME}/Applications/${app}/" 2>&1 > /dev/null || true
if [ "$?" != "0" ]; then if [ "$?" != "0" ]; then
echo "An error occurred, proceeding anyway" echo "An error occurred, proceeding anyway"
fi fi