summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlejandro Soto <alejandro@34project.org>2022-08-08 05:11:59 -0600
committerAlejandro Soto <alejandro@34project.org>2022-08-08 05:11:59 -0600
commit45d079d445bb3d6c2df4e3c99349677eed78010b (patch)
tree722a9c2a17a478467c30e9b5f3f98b588a5398e7
parentf74c0f26e887467f1edd3bda5f03da3786180eb3 (diff)
sys: implement primitive impermanence
Diffstat (limited to '')
-rw-r--r--flake.nix83
-rw-r--r--sys/default.nix4
-rw-r--r--sys/fs/default.nix21
3 files changed, 63 insertions, 45 deletions
diff --git a/flake.nix b/flake.nix
index d0357ed..5780813 100644
--- a/flake.nix
+++ b/flake.nix
@@ -9,55 +9,58 @@
};
nur.url = "github:nix-community/NUR";
+ impermanence.url = "github:nix-community/impermanence";
};
- outputs = { self, nixpkgs, nixpkgsUnstable, home-manager, nur, ... }: with nixpkgs.lib; let
- util = import ./util;
- inherit (util nixpkgs.lib) importAll;
+ outputs =
+ { self, nixpkgs, nixpkgsUnstable, home-manager, nur, impermanence, ... }:
+ with nixpkgs.lib; let
+ util = import ./util;
+ inherit (util nixpkgs.lib) importAll;
- pkgSet = pkgs: import ./pkgs {
- inherit pkgs;
- util = util pkgs.lib;
- };
- in {
- packages."x86_64-linux" = pkgSet nixpkgs.legacyPackages."x86_64-linux";
-
- overlay = self: super: {
- local = pkgSet super;
- unstable = import nixpkgsUnstable { inherit (super) config system; };
- };
+ pkgSet = pkgs: import ./pkgs {
+ inherit pkgs;
+ util = util pkgs.lib;
+ };
+ in {
+ packages."x86_64-linux" = pkgSet nixpkgs.legacyPackages."x86_64-linux";
- nixosConfigurations = let
- hostConfig = host: (makeOverridable nixosSystem) {
- system = "x86_64-linux";
- modules = [ (import ./sys { inherit self; }) host ];
+ overlay = self: super: {
+ local = pkgSet super;
+ unstable = import nixpkgsUnstable { inherit (super) config system; };
};
- in mapAttrs (_: hostConfig) (importAll { root = ./sys/platform; });
- homeConfigurations = let
- home = platform: home-manager.lib.homeManagerConfiguration {
- system = "x86_64-linux";
+ nixosConfigurations = let
+ hostConfig = host: (makeOverridable nixosSystem) {
+ system = "x86_64-linux";
+ modules = [ (import ./sys { inherit self impermanence; }) host ];
+ };
+ in mapAttrs (_: hostConfig) (importAll { root = ./sys/platform; });
- configuration = import ./home { inherit self nixpkgs nixpkgsUnstable nur; };
- extraModules = [ platform ];
+ homeConfigurations = let
+ home = platform: home-manager.lib.homeManagerConfiguration {
+ system = "x86_64-linux";
- username = "ale";
- homeDirectory = "/home/ale";
+ configuration = import ./home { inherit self nixpkgs nixpkgsUnstable nur; };
+ extraModules = [ platform ];
- # Update the state version as needed.
- # See the changelog here:
- # https://nix-community.github.io/home-manager/release-notes.html#sec-release-21.05
- stateVersion = "21.11";
+ username = "ale";
+ homeDirectory = "/home/ale";
- # Optionally use extraSpecialArgs
- # to pass through arguments to home.nix
- extraSpecialArgs = {};
- };
+ # Update the state version as needed.
+ # See the changelog here:
+ # https://nix-community.github.io/home-manager/release-notes.html#sec-release-21.05
+ stateVersion = "21.11";
- homeConfig = id: platform: {
- name = "ale@${id}";
- value = home platform;
- };
- in mapAttrs' homeConfig (importAll { root = ./home/platform; });
- };
+ # Optionally use extraSpecialArgs
+ # to pass through arguments to home.nix
+ extraSpecialArgs = {};
+ };
+
+ homeConfig = id: platform: {
+ name = "ale@${id}";
+ value = home platform;
+ };
+ in mapAttrs' homeConfig (importAll { root = ./home/platform; });
+ };
}
diff --git a/sys/default.nix b/sys/default.nix
index 215361e..ad99009 100644
--- a/sys/default.nix
+++ b/sys/default.nix
@@ -1,8 +1,10 @@
-{ self }:
+{ self, impermanence }:
{ lib, config, pkgs, modulesPath, ... }:
{
imports = [
"${modulesPath}/installer/scan/not-detected.nix"
+ impermanence.nixosModule
+
./auth.nix
./boot.nix
./fs
diff --git a/sys/fs/default.nix b/sys/fs/default.nix
index 9f2f646..d24e357 100644
--- a/sys/fs/default.nix
+++ b/sys/fs/default.nix
@@ -1,19 +1,32 @@
{ lib, config, ... }:
with lib; let
- cfg = config.local;
+ cfg = config.local.fs;
in {
imports = [ ./btrfs.nix ./layout.nix ];
- options.local.fs.boot.device = with lib.types; mkOption {
- type = str;
+ options.local.fs = with lib.types; {
+ impermanence = mkOption {
+ type = bool;
+ default = false;
+ };
+
+ boot.device = mkOption {
+ type = str;
+ };
};
config = {
# !!!
boot.tmpOnTmpfs = true;
+ fileSystems."/" = mkIf cfg.impermanence {
+ device = "tmpfs";
+ fsType = "tmpfs";
+ options = [ "size=1G" "mode=755" ];
+ };
+
fileSystems."/boot" = {
- inherit (cfg.fs.boot) device;
+ inherit (cfg.boot) device;
fsType = "vfat";
options = [ "noatime" "umask=027" ];
};