Merge branch 'main' of gh:greg-hellings/nixos-config
This commit is contained in:
+1
-1
@@ -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
@@ -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",
|
||||||
|
|||||||
@@ -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
@@ -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
@@ -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;
|
||||||
|
};
|
||||||
|
})
|
||||||
|
|||||||
@@ -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
@@ -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
@@ -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,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
|
||||||
|
|||||||
@@ -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" ];
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
||||||
@@ -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
@@ -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
|
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -2,6 +2,7 @@
|
|||||||
|
|
||||||
{
|
{
|
||||||
imports = [
|
imports = [
|
||||||
|
./gnome.nix
|
||||||
./xonsh.nix
|
./xonsh.nix
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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
@@ -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
@@ -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>
|
||||||
|
|
||||||
@@ -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 = {
|
||||||
"94.140.14.14"
|
domain = "thehellings.lan";
|
||||||
"94.140.15.15"
|
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.15.15"
|
||||||
|
];
|
||||||
|
};
|
||||||
extraConfig = "${extraConfig}";
|
extraConfig = "${extraConfig}";
|
||||||
};
|
};
|
||||||
environment.systemPackages = [ pkgs.curl ];
|
environment.systemPackages = [ pkgs.curl ];
|
||||||
|
|||||||
@@ -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
@@ -1,12 +1,103 @@
|
|||||||
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
|
||||||
|
ksyTVqvLxP73CCujwch/+g==
|
||||||
|
|||||||
@@ -0,0 +1,10 @@
|
|||||||
|
{ pkgs, ... }:
|
||||||
|
|
||||||
|
{
|
||||||
|
wsl = {
|
||||||
|
enable = true;
|
||||||
|
wslConf.automount.root = "/mnt";
|
||||||
|
defaultUser = "greg";
|
||||||
|
startMenuLaunchers = true;
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -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";
|
||||||
|
|||||||
@@ -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 +0,0 @@
|
|||||||
modules
|
|
||||||
@@ -2,7 +2,6 @@
|
|||||||
|
|
||||||
{
|
{
|
||||||
imports = [
|
imports = [
|
||||||
./syncthing.nix
|
|
||||||
./users.nix
|
./users.nix
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
||||||
@@ -11,6 +11,9 @@ let
|
|||||||
dateutil
|
dateutil
|
||||||
flake8
|
flake8
|
||||||
ipython
|
ipython
|
||||||
|
jedi
|
||||||
|
mypy
|
||||||
|
pylint
|
||||||
pyyaml
|
pyyaml
|
||||||
responses
|
responses
|
||||||
ruamel-yaml
|
ruamel-yaml
|
||||||
|
|||||||
+11
-7
@@ -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
|
||||||
|
|||||||
Reference in New Issue
Block a user