initial attempt at impermance
This commit is contained in:
parent
bfe077d474
commit
932838f736
5 changed files with 74 additions and 39 deletions
|
@ -6,10 +6,10 @@
|
|||
postDeviceCommands = lib.mkAfter ''
|
||||
mkdir /btrfs_tmp
|
||||
mount /dev/disk/by-uuid/b6e6bca7-1435-4b41-b174-8550eace7c32 /btrfs_tmp
|
||||
if [[ -e /btrfs_tmp/root ]]; then
|
||||
if [[ -e /btrfs_tmp/rootfs ]]; then
|
||||
mkdir -p /btrfs_tmp/old_roots
|
||||
timestamp=$(date --date="@$(stat -c %Y /btrfs_tmp/root)" "+%Y-%m-%-d_%H:%M:%S")
|
||||
mv /btrfs_tmp/root "/btrfs_tmp/old_roots/$timestamp"
|
||||
timestamp=$(date --date="@$(stat -c %Y /btrfs_tmp/rootfs)" "+%Y-%m-%-d_%H:%M:%S")
|
||||
mv /btrfs_tmp/rootfs "/btrfs_tmp/old_roots/$timestamp"
|
||||
fi
|
||||
|
||||
delete_subvolume_recursively() {
|
||||
|
@ -24,7 +24,7 @@
|
|||
delete_subvolume_recursively "$i"
|
||||
done
|
||||
|
||||
btrfs subvolume create /btrfs_tmp/root
|
||||
btrfs subvolume create /btrfs_tmp/rootfs
|
||||
umount /btrfs_tmp
|
||||
'';
|
||||
};
|
||||
|
@ -35,6 +35,7 @@
|
|||
fileSystems = {
|
||||
"/boot" = {
|
||||
device = "/dev/disk/by-uuid/7ABC-9C12";
|
||||
neededForBoot = true;
|
||||
fsType = "vfat";
|
||||
};
|
||||
"/" = {
|
||||
|
@ -45,16 +46,19 @@
|
|||
"/nix" = {
|
||||
device = "/dev/disk/by-uuid/b6e6bca7-1435-4b41-b174-8550eace7c32";
|
||||
fsType = "btrfs";
|
||||
neededForBoot = true;
|
||||
options = [ "subvol=nix" "compress=zstd" "noatime" ];
|
||||
};
|
||||
"/persist" = {
|
||||
device = "/dev/disk/by-uuid/b6e6bca7-1435-4b41-b174-8550eace7c32";
|
||||
fsType = "btrfs";
|
||||
neededForBoot = true;
|
||||
options = [ "subvol=persist" "compress=zstd" "noatime" ];
|
||||
};
|
||||
"/ext" = {
|
||||
device = "/dev/disk/by-uuid/3ed92a26-775a-4e39-ac1c-84b2822cd3dd";
|
||||
fsType = "btrfs";
|
||||
neededForBoot = true;
|
||||
options = [ "subvol=ext" "compress=zstd" "noatime" ];
|
||||
};
|
||||
};
|
||||
|
|
16
flake.lock
generated
16
flake.lock
generated
|
@ -249,6 +249,21 @@
|
|||
"type": "github"
|
||||
}
|
||||
},
|
||||
"impermanence": {
|
||||
"locked": {
|
||||
"lastModified": 1708968331,
|
||||
"narHash": "sha256-VUXLaPusCBvwM3zhGbRIJVeYluh2uWuqtj4WirQ1L9Y=",
|
||||
"owner": "nix-community",
|
||||
"repo": "impermanence",
|
||||
"rev": "a33ef102a02ce77d3e39c25197664b7a636f9c30",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "nix-community",
|
||||
"repo": "impermanence",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"niri": {
|
||||
"inputs": {
|
||||
"crate2nix": "crate2nix",
|
||||
|
@ -464,6 +479,7 @@
|
|||
"root": {
|
||||
"inputs": {
|
||||
"home-manager": "home-manager",
|
||||
"impermanence": "impermanence",
|
||||
"niri": "niri",
|
||||
"nixos-hardware": "nixos-hardware",
|
||||
"nixpkgs": "nixpkgs_3",
|
||||
|
|
|
@ -21,6 +21,10 @@
|
|||
url = "github:sodiboo/niri-flake";
|
||||
inputs.nixpkgs.follows = "nixpkgs";
|
||||
};
|
||||
|
||||
impermanence = {
|
||||
url = "github:nix-community/impermanence";
|
||||
};
|
||||
};
|
||||
|
||||
outputs = inputs: import ./outputs.nix inputs;
|
||||
|
|
8
modules/system/persist/default.nix
Normal file
8
modules/system/persist/default.nix
Normal file
|
@ -0,0 +1,8 @@
|
|||
{ ... }: {
|
||||
environment.persistence."/persist" = {
|
||||
files = [
|
||||
"/etc/shadow"
|
||||
"/etc/passwd"
|
||||
];
|
||||
};
|
||||
}
|
73
outputs.nix
73
outputs.nix
|
@ -1,35 +1,5 @@
|
|||
{ nixpkgs, home-manager, nixos-hardware, nur, niri, ... }@inputs: {
|
||||
nixosConfigurations = let
|
||||
|
||||
clientModules = [
|
||||
./modules/system
|
||||
./options.nix
|
||||
niri.nixosModules.niri
|
||||
home-manager.nixosModules.home-manager {
|
||||
nixpkgs.overlays = [
|
||||
nur.overlay
|
||||
];
|
||||
home-manager = {
|
||||
useGlobalPkgs = true;
|
||||
useUserPackages = true;
|
||||
users.twoneis = import ./modules/system/home;
|
||||
};
|
||||
}
|
||||
];
|
||||
|
||||
serverModules = [
|
||||
./modules/server
|
||||
./options.nix
|
||||
home-manager.nixosModules.home-manager {
|
||||
home-manager = {
|
||||
useGlobalPkgs = true;
|
||||
useUserPackages = true;
|
||||
users.twoneis = import ./modules/server/home;
|
||||
};
|
||||
}
|
||||
];
|
||||
|
||||
in {
|
||||
{ nixpkgs, home-manager, nixos-hardware, nur, niri, impermanence, ... }@inputs: {
|
||||
nixosConfigurations = {
|
||||
# AMD Ryzen 5600X
|
||||
# nvidia GeForce GTX 1060 (6GB)
|
||||
ellaca = nixpkgs.lib.nixosSystem {
|
||||
|
@ -39,7 +9,20 @@
|
|||
};
|
||||
modules = [
|
||||
./devices/ellaca
|
||||
] ++ clientModules;
|
||||
./modules/system
|
||||
./modules/system/persist
|
||||
./options.nix
|
||||
niri.nixosModules.niri
|
||||
impermanence.nixosModules.impermanence
|
||||
home-manager.nixosModules.home-manager {
|
||||
nixpkgs.overlays = [ nur.overlay ];
|
||||
home-manager = {
|
||||
useGlobalPkgs = true;
|
||||
useUserPackages = true;
|
||||
users.twoneis = import ./modules/system/home;
|
||||
};
|
||||
}
|
||||
];
|
||||
};
|
||||
|
||||
# Surface Pro 7 (i5 128GB)
|
||||
|
@ -50,8 +33,19 @@
|
|||
};
|
||||
modules = [
|
||||
./devices/akarso
|
||||
./modules/system
|
||||
./options.nix
|
||||
nixos-hardware.nixosModules.microsoft-surface-pro-intel
|
||||
] ++ clientModules;
|
||||
niri.nixosModules.niri
|
||||
home-manager.nixosModules.home-manager {
|
||||
nixpkgs.overlays = [ nur.overlay ];
|
||||
home-manager = {
|
||||
useGlobalPkgs = true;
|
||||
useUserPackages = true;
|
||||
users.twoneis = import ./modules/system/home;
|
||||
};
|
||||
}
|
||||
];
|
||||
};
|
||||
|
||||
# Zotac Mini
|
||||
|
@ -63,7 +57,16 @@
|
|||
};
|
||||
modules = [
|
||||
./devices/creosote
|
||||
] ++ serverModules;
|
||||
./modules/server
|
||||
./options.nix
|
||||
home-manager.nixosModules.home-manager {
|
||||
home-manager = {
|
||||
useGlobalPkgs = true;
|
||||
useUserPackages = true;
|
||||
users.twoneis = import ./modules/server/home;
|
||||
};
|
||||
}
|
||||
];
|
||||
};
|
||||
};
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue