From 1ef9dd84c91caacdada8def905511bd68a670851 Mon Sep 17 00:00:00 2001 From: Julien Malka Date: Mon, 30 Sep 2024 10:42:30 +0200 Subject: [PATCH] feat: activate impermanence on gallifrey --- machines/gallifrey/default.nix | 18 ++++++++++++++- machines/gallifrey/hardware.nix | 13 ++++++++++- machines/gallifrey/home-julien.nix | 9 ++++++++ modules/hmgr/default.nix | 35 +++++++++++++++++++----------- 4 files changed, 60 insertions(+), 15 deletions(-) diff --git a/machines/gallifrey/default.nix b/machines/gallifrey/default.nix index 305af32..ec4cc09 100644 --- a/machines/gallifrey/default.nix +++ b/machines/gallifrey/default.nix @@ -25,7 +25,7 @@ networking.networkmanager.dns = "systemd-resolved"; services.resolved.enable = true; - services.userborn.enable = true; + #services.userborn.enable = true; services.displayManager.autoLogin = { enable = true; @@ -99,5 +99,21 @@ xorg.xinit ]; + environment.persistence."/persistent" = { + hidemounts = true; + directories = [ + "/var/lib" + "/var/log" + ]; + files = [ + "/etc/machine-id" + "/etc/ssh/ssh_host_ed25519_key" + "/etc/ssh/ssh_host_ed25519_key.pub" + ]; + }; + programs.fuse.userAllowOther = true; + + filesystems."/persistent".neededforboot = true; + system.stateVersion = "24.11"; } diff --git a/machines/gallifrey/hardware.nix b/machines/gallifrey/hardware.nix index 6ac15d7..69e7308 100644 --- a/machines/gallifrey/hardware.nix +++ b/machines/gallifrey/hardware.nix @@ -1,7 +1,12 @@ # Do not modify this file! It was generated by ‘nixos-generate-config’ # and may be overwritten by future invocations. Please make changes # to /etc/nixos/configuration.nix instead. -{ lib, modulesPath, ... }: +{ + lib, + modulesPath, + pkgs, + ... +}: { imports = [ @@ -18,6 +23,12 @@ boot.kernelModules = [ ]; boot.extraModulePackages = [ ]; + boot.initrd.postDeviceCommands = '' + lvm lvremove --force /dev/mainpool/root || : + yes | lvm lvcreate --size 100G --name root mainpool + ${pkgs.e2fsprogs}/bin/mkfs.ext4 /dev/mainpool/root + ''; + # Enables DHCP on each ethernet and wireless interface. In case of scripted networking # (the default) this is the recommended approach. When using systemd-networkd it's # still possible to use this option, but it's recommended to use it in conjunction diff --git a/machines/gallifrey/home-julien.nix b/machines/gallifrey/home-julien.nix index 8a21341..aab777b 100644 --- a/machines/gallifrey/home-julien.nix +++ b/machines/gallifrey/home-julien.nix @@ -76,6 +76,15 @@ fonts.fontconfig.enable = true; + home.persistence."/persistent/home/julien" = { + directories = [ + "Pictures" + "Documents" + ".ssh" + ]; + allowOther = true; + }; + programs.firefox = { enable = true; package = pkgs.firefox; diff --git a/modules/hmgr/default.nix b/modules/hmgr/default.nix index f2bc27a..29d3513 100644 --- a/modules/hmgr/default.nix +++ b/modules/hmgr/default.nix @@ -1,4 +1,9 @@ -{ config, lib, ... }: +{ + config, + lib, + inputs, + ... +}: let cfg = config.luj.hmgr; in @@ -10,16 +15,20 @@ with lib; config = { home-manager.useGlobalPkgs = true; - home-manager.users = - lib.mapAttrs - (name: value: - { - imports = with builtins; (map (x: ../../home-manager-modules + "/${x}/default.nix") (attrNames (readDir ../../home-manager-modules))); - home.username = "${name}"; - home.homeDirectory = "/home/${name}"; - home.stateVersion = "21.05"; - } // value) - cfg; + home-manager.users = lib.mapAttrs ( + name: value: + { + imports = + with builtins; + (map (x: ../../home-manager-modules + "/${x}/default.nix") ( + attrNames (readDir ../../home-manager-modules) + )) + ++ [ "${inputs.impermanence}/home-manager.nix" ]; + home.username = "${name}"; + home.homeDirectory = "/home/${name}"; + home.stateVersion = "21.05"; + } + // value + ) cfg; }; -} - +}