Enhance Nix configuration: update backup file extension, add SSHFS and bind mounts for user directories, and introduce rebuild script for improved management
This commit is contained in:
parent
f86f184345
commit
41ba46324e
4 changed files with 131 additions and 6 deletions
|
@ -41,7 +41,7 @@ in
|
||||||
# Force home-manager to use global packages
|
# Force home-manager to use global packages
|
||||||
home-manager.useGlobalPkgs = true;
|
home-manager.useGlobalPkgs = true;
|
||||||
# If there is a conflict file that is backed up, use this extension
|
# If there is a conflict file that is backed up, use this extension
|
||||||
home-manager.backupFileExtension = "bk";
|
home-manager.backupFileExtension = "homeManagerBackupFileExtension";
|
||||||
# home-manager.useUserPackages = true;
|
# home-manager.useUserPackages = true;
|
||||||
|
|
||||||
## Overlays ##
|
## Overlays ##
|
||||||
|
|
|
@ -8,7 +8,9 @@
|
||||||
modulesPath,
|
modulesPath,
|
||||||
...
|
...
|
||||||
}:
|
}:
|
||||||
|
let
|
||||||
|
username = config.hostSpec.username;
|
||||||
|
in
|
||||||
{
|
{
|
||||||
imports = [
|
imports = [
|
||||||
(modulesPath + "/profiles/qemu-guest.nix")
|
(modulesPath + "/profiles/qemu-guest.nix")
|
||||||
|
@ -41,11 +43,33 @@
|
||||||
extraModulePackages = [ ];
|
extraModulePackages = [ ];
|
||||||
};
|
};
|
||||||
|
|
||||||
fileSystems."/" = {
|
fileSystems = {
|
||||||
|
"/" = {
|
||||||
device = "/dev/disk/by-uuid/a0b82536-3087-410a-b283-60ea10811ef5";
|
device = "/dev/disk/by-uuid/a0b82536-3087-410a-b283-60ea10811ef5";
|
||||||
fsType = "ext4";
|
fsType = "ext4";
|
||||||
};
|
};
|
||||||
|
|
||||||
|
"/pool" = {
|
||||||
|
device = "${username}@104.40.4.24:/pool";
|
||||||
|
fsType = "sshfs";
|
||||||
|
options = [
|
||||||
|
"defaults"
|
||||||
|
"reconnect"
|
||||||
|
"_netdev"
|
||||||
|
"allow_other"
|
||||||
|
"identityfile=/home/${username}/.ssh/pve"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
|
||||||
|
"/home/${username}/git" = {
|
||||||
|
fsType = "none";
|
||||||
|
device = "/pool/git";
|
||||||
|
options = [
|
||||||
|
"bind"
|
||||||
|
"nofail"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
};
|
||||||
swapDevices = [ ];
|
swapDevices = [ ];
|
||||||
|
|
||||||
# Enables DHCP on each ethernet and wireless interface. In case of scripted networking
|
# Enables DHCP on each ethernet and wireless interface. In case of scripted networking
|
||||||
|
|
73
scripts/rebuild.fish
Normal file
73
scripts/rebuild.fish
Normal file
|
@ -0,0 +1,73 @@
|
||||||
|
#!/usr/bin/env fish
|
||||||
|
|
||||||
|
function red
|
||||||
|
# Usage: red <message> [<command-string>]
|
||||||
|
printf "\033[31m[!] %s \033[0m\n" $argv[1]
|
||||||
|
if test (count $argv) -ge 2
|
||||||
|
# If there's a second argument, we eval it and print in red as well
|
||||||
|
printf "\033[31m[!] %s \033[0m\n" (eval "$argv[2]")
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
function green
|
||||||
|
# Usage: green <message> [<command-string>]
|
||||||
|
printf "\033[32m[+] %s \033[0m\n" $argv[1]
|
||||||
|
if test (count $argv) -ge 2
|
||||||
|
printf "\033[32m[+] %s \033[0m\n" (eval "$argv[2]")
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
function yellow
|
||||||
|
# Usage: yellow <message> [<command-string>]
|
||||||
|
printf "\033[33m[*] %s \033[0m\n" $argv[1]
|
||||||
|
if test (count $argv) -ge 2
|
||||||
|
printf "\033[33m[*] %s \033[0m\n" (eval "$argv[2]")
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
# Build switch arguments
|
||||||
|
set switch_args "--show-trace" "--impure" "--flake"
|
||||||
|
|
||||||
|
# Check first argument
|
||||||
|
if test (count $argv) -gt 0 -a "$argv[1]" = "trace"
|
||||||
|
set switch_args $switch_args "--show-trace"
|
||||||
|
else if test (count $argv) -gt 0
|
||||||
|
set HOST $argv[1]
|
||||||
|
else
|
||||||
|
set HOST (hostname)
|
||||||
|
end
|
||||||
|
|
||||||
|
# Append flake and host switch
|
||||||
|
set switch_args $switch_args ".#$HOST" "switch"
|
||||||
|
|
||||||
|
green "====== REBUILD ======"
|
||||||
|
|
||||||
|
# Check if `nh` exists
|
||||||
|
if type -q nh
|
||||||
|
find ~ -type f -name "*.homeManagerBackupFileExtension" -delete
|
||||||
|
set -x REPO_PATH (pwd)
|
||||||
|
nh os switch . -- --impure --show-trace
|
||||||
|
else
|
||||||
|
find ~ -type f -name "*.homeManagerBackupFileExtension" -delete
|
||||||
|
sudo nixos-rebuild $switch_args
|
||||||
|
end
|
||||||
|
|
||||||
|
# If successful
|
||||||
|
if test $status -eq 0
|
||||||
|
green "====== POST-REBUILD ======"
|
||||||
|
green "Rebuilt successfully"
|
||||||
|
|
||||||
|
# Check for a clean git working directory
|
||||||
|
if git diff --exit-code >/dev/null
|
||||||
|
and git diff --staged --exit-code >/dev/null
|
||||||
|
# Check if the current HEAD commit is already tagged as buildable
|
||||||
|
if git tag --points-at HEAD | grep -q buildable
|
||||||
|
yellow "Current commit is already tagged as buildable"
|
||||||
|
else
|
||||||
|
git tag buildable-(date +%Y%m%d%H%M%S) -m ''
|
||||||
|
green "Tagged current commit as buildable"
|
||||||
|
end
|
||||||
|
else
|
||||||
|
yellow "WARN: There are pending changes that would affect the build succeeding. Commit them before tagging"
|
||||||
|
end
|
||||||
|
end
|
28
shell.nix
Normal file
28
shell.nix
Normal file
|
@ -0,0 +1,28 @@
|
||||||
|
# Shell for bootstrapping flake-enabled nix and other tooling
|
||||||
|
{
|
||||||
|
pkgs ?
|
||||||
|
# If pkgs is not defined, instantiate nixpkgs from locked commit
|
||||||
|
let
|
||||||
|
lock = (builtins.fromJSON (builtins.readFile ./flake.lock)).nodes.nixpkgs.locked;
|
||||||
|
nixpkgs = fetchTarball {
|
||||||
|
url = "https://github.com/nixos/nixpkgs/archive/${lock.rev}.tar.gz";
|
||||||
|
sha256 = lock.narHash;
|
||||||
|
};
|
||||||
|
in
|
||||||
|
import nixpkgs { overlays = [ ]; },
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
{
|
||||||
|
default = pkgs.mkShell {
|
||||||
|
nativeBuildInputs = builtins.attrValues {
|
||||||
|
inherit (pkgs)
|
||||||
|
|
||||||
|
nix
|
||||||
|
home-manager
|
||||||
|
nh
|
||||||
|
git
|
||||||
|
bats # for bash testing
|
||||||
|
;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
Loading…
Add table
Reference in a new issue