From 46c589dc27deb101b00d032df736caf559fa05bd Mon Sep 17 00:00:00 2001 From: Patryk Niedźwiedziński Date: Fri, 4 Oct 2024 17:29:48 +0200 Subject: Add auto rebuild --- .github/workflows/main.yml | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) create mode 100644 .github/workflows/main.yml diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml new file mode 100644 index 0000000..c9a0103 --- /dev/null +++ b/.github/workflows/main.yml @@ -0,0 +1,27 @@ +name: "Rebuild system" + +on: + schedule: + - cron: "0 8 * * 0" + +jobs: + fetcher: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v2 + + - name: "Install Nix ❄️" + uses: cachix/install-nix-action@v18 + with: + extra_nix_config: | + substituters = https://pn.cachix.org/ https://cache.nixos.org/ + trusted-public-keys = pn.cachix.org-1:KC0hqPVkcs7WUSv8xCkUNzrpDVKYh8TwZIqvhASvbJM= cache.nixos.org-1:6NCHdD59X431o0gWypbMrAURkbJ16ZPMQFGspcDShjY= + + - name: Cachix + uses: cachix/cachix-action@v15 + with: + name: pn + + - name: "Build" + id: fetcher + run: nix build .#nixosConfigurations.t14 -- cgit 1.4.1 From 4c52e693cbafa751de95b50ee1e1bcc1f2545070 Mon Sep 17 00:00:00 2001 From: Patryk Niedźwiedziński Date: Fri, 4 Oct 2024 17:32:27 +0200 Subject: Update and rename main.yml to rebuild.yml --- .github/workflows/main.yml | 27 --------------------------- .github/workflows/rebuild.yml | 28 ++++++++++++++++++++++++++++ 2 files changed, 28 insertions(+), 27 deletions(-) delete mode 100644 .github/workflows/main.yml create mode 100644 .github/workflows/rebuild.yml diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml deleted file mode 100644 index c9a0103..0000000 --- a/.github/workflows/main.yml +++ /dev/null @@ -1,27 +0,0 @@ -name: "Rebuild system" - -on: - schedule: - - cron: "0 8 * * 0" - -jobs: - fetcher: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v2 - - - name: "Install Nix ❄️" - uses: cachix/install-nix-action@v18 - with: - extra_nix_config: | - substituters = https://pn.cachix.org/ https://cache.nixos.org/ - trusted-public-keys = pn.cachix.org-1:KC0hqPVkcs7WUSv8xCkUNzrpDVKYh8TwZIqvhASvbJM= cache.nixos.org-1:6NCHdD59X431o0gWypbMrAURkbJ16ZPMQFGspcDShjY= - - - name: Cachix - uses: cachix/cachix-action@v15 - with: - name: pn - - - name: "Build" - id: fetcher - run: nix build .#nixosConfigurations.t14 diff --git a/.github/workflows/rebuild.yml b/.github/workflows/rebuild.yml new file mode 100644 index 0000000..474abaf --- /dev/null +++ b/.github/workflows/rebuild.yml @@ -0,0 +1,28 @@ +name: "Rebuild system" + +on: + workflow_dispatch: + schedule: + - cron: "0 8 * * 0" + +jobs: + fetcher: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v2 + + - name: "Install Nix ❄️" + uses: cachix/install-nix-action@v18 + with: + extra_nix_config: | + substituters = https://pn.cachix.org/ https://cache.nixos.org/ + trusted-public-keys = pn.cachix.org-1:KC0hqPVkcs7WUSv8xCkUNzrpDVKYh8TwZIqvhASvbJM= cache.nixos.org-1:6NCHdD59X431o0gWypbMrAURkbJ16ZPMQFGspcDShjY= + + - name: Cachix + uses: cachix/cachix-action@v15 + with: + name: pn + + - name: "Build" + id: fetcher + run: nix build .#nixosConfigurations.t14 -- cgit 1.4.1 From 5cbc2e88a7cf681876566c81025d3eb6975bda07 Mon Sep 17 00:00:00 2001 From: Patryk Niedźwiedziński Date: Fri, 4 Oct 2024 17:39:00 +0200 Subject: Update rebuild.yml --- .github/workflows/rebuild.yml | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/.github/workflows/rebuild.yml b/.github/workflows/rebuild.yml index 474abaf..196c602 100644 --- a/.github/workflows/rebuild.yml +++ b/.github/workflows/rebuild.yml @@ -1,6 +1,7 @@ name: "Rebuild system" on: + push: workflow_dispatch: schedule: - cron: "0 8 * * 0" @@ -13,11 +14,7 @@ jobs: - name: "Install Nix ❄️" uses: cachix/install-nix-action@v18 - with: - extra_nix_config: | - substituters = https://pn.cachix.org/ https://cache.nixos.org/ - trusted-public-keys = pn.cachix.org-1:KC0hqPVkcs7WUSv8xCkUNzrpDVKYh8TwZIqvhASvbJM= cache.nixos.org-1:6NCHdD59X431o0gWypbMrAURkbJ16ZPMQFGspcDShjY= - + - name: Cachix uses: cachix/cachix-action@v15 with: -- cgit 1.4.1 From e97d1eccc1bab975c3fd8dab8ff840c499a4e8c9 Mon Sep 17 00:00:00 2001 From: Patryk Niedźwiedziński Date: Fri, 4 Oct 2024 17:43:53 +0200 Subject: Update rebuild.yml --- .github/workflows/rebuild.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/rebuild.yml b/.github/workflows/rebuild.yml index 196c602..433e1ec 100644 --- a/.github/workflows/rebuild.yml +++ b/.github/workflows/rebuild.yml @@ -10,10 +10,10 @@ jobs: fetcher: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v2 + - uses: actions/checkout@v4 - name: "Install Nix ❄️" - uses: cachix/install-nix-action@v18 + uses: cachix/install-nix-action@v30 - name: Cachix uses: cachix/cachix-action@v15 -- cgit 1.4.1 From cbccdb54716054893393deb55fca7a9964ac2f90 Mon Sep 17 00:00:00 2001 From: Patryk Niedźwiedziński Date: Fri, 4 Oct 2024 17:48:25 +0200 Subject: Fix config path --- .github/workflows/rebuild.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/rebuild.yml b/.github/workflows/rebuild.yml index 433e1ec..301b206 100644 --- a/.github/workflows/rebuild.yml +++ b/.github/workflows/rebuild.yml @@ -22,4 +22,4 @@ jobs: - name: "Build" id: fetcher - run: nix build .#nixosConfigurations.t14 + run: nix build .#nixosConfigurations.t14.config.system.build.toplevel -- cgit 1.4.1 From f391b4f4fe19651c3f66101b66f9794895fe72cd Mon Sep 17 00:00:00 2001 From: Patryk Niedźwiedziński Date: Fri, 4 Oct 2024 18:01:49 +0200 Subject: Add secrets --- .github/workflows/rebuild.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/rebuild.yml b/.github/workflows/rebuild.yml index 301b206..2ccd017 100644 --- a/.github/workflows/rebuild.yml +++ b/.github/workflows/rebuild.yml @@ -19,6 +19,7 @@ jobs: uses: cachix/cachix-action@v15 with: name: pn + authToken: '${{ secrets.CACHIX_AUTH_TOKEN }}' - name: "Build" id: fetcher -- cgit 1.4.1 From 5aea19e5606f60302c087c1dcb1e76341a63a139 Mon Sep 17 00:00:00 2001 From: Patryk Niedźwiedziński Date: Sat, 5 Oct 2024 20:47:54 +0200 Subject: Add x220 disko --- flake.lock | 33 +++++++++--- flake.nix | 13 +++++ machines/x220/default.nix | 74 +++++++++++++++++++++++++++ machines/x220/disko-config.nix | 87 ++++++++++++++++++++++++++++++++ machines/x220/hardware-configuration.nix | 33 ++++++++++++ 5 files changed, 234 insertions(+), 6 deletions(-) create mode 100644 machines/x220/default.nix create mode 100644 machines/x220/disko-config.nix create mode 100644 machines/x220/hardware-configuration.nix diff --git a/flake.lock b/flake.lock index df25053..5acc33b 100644 --- a/flake.lock +++ b/flake.lock @@ -1,5 +1,25 @@ { "nodes": { + "disko": { + "inputs": { + "nixpkgs": [ + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1728109432, + "narHash": "sha256-wmbErh8FG7dRKOtMMpHUqDtFjeqt9Zjx4zssSeTalwU=", + "owner": "nix-community", + "repo": "disko", + "rev": "48ebb577855fb2398653f033b3b2208a9249203d", + "type": "github" + }, + "original": { + "owner": "nix-community", + "repo": "disko", + "type": "github" + } + }, "home-manager": { "inputs": { "nixpkgs": [ @@ -23,11 +43,11 @@ }, "nixos-hardware": { "locked": { - "lastModified": 1727613673, - "narHash": "sha256-qqIffTQfxMYo3MKQ9BoY2s2mdKZNnUiksdnxv81js9U=", + "lastModified": 1728056216, + "narHash": "sha256-IrO06gFUDTrTlIP3Sz+mRB6WUoO2YsgMtOD3zi0VEt0=", "owner": "NixOS", "repo": "nixos-hardware", - "rev": "f5c239fa9acb27f0a5326ba2949c00fada89ca9f", + "rev": "b7ca02c7565fbf6d27ff20dd6dbd49c5b82eef28", "type": "github" }, "original": { @@ -39,11 +59,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1727540905, - "narHash": "sha256-40J9tW7Y794J7Uw4GwcAKlMxlX2xISBl6IBigo83ih8=", + "lastModified": 1728067476, + "narHash": "sha256-/uJcVXuBt+VFCPQIX+4YnYrHaubJSx4HoNsJVNRgANM=", "owner": "nixos", "repo": "nixpkgs", - "rev": "fbca5e745367ae7632731639de5c21f29c8744ed", + "rev": "6e6b3dd395c3b1eb9be9f2d096383a8d05add030", "type": "github" }, "original": { @@ -55,6 +75,7 @@ }, "root": { "inputs": { + "disko": "disko", "home-manager": "home-manager", "nixos-hardware": "nixos-hardware", "nixpkgs": "nixpkgs" diff --git a/flake.nix b/flake.nix index bbabfb3..ed19fcc 100644 --- a/flake.nix +++ b/flake.nix @@ -9,6 +9,8 @@ inputs.nixpkgs.follows = "nixpkgs"; }; nixos-hardware.url = "github:NixOS/nixos-hardware/master"; + disko.url = "github:nix-community/disko"; + disko.inputs.nixpkgs.follows = "nixpkgs"; }; outputs = { self, nixpkgs, ... }@inputs: @@ -50,6 +52,17 @@ home-manager.users.pn = import ./home.nix; } ]; + x220 = nixosSystem "x86_64-linux" "x220" [ + inputs.nixos-hardware.nixosModules.lenovo-thinkpad-x220 + inputs.disko.nixosModules.disko + inputs.home-manager.nixosModules.default + { + home-manager.useGlobalPkgs = true; + home-manager.useUserPackages = true; + home-manager.users.pn = import ./home.nix; + } + + ]; }; }; } diff --git a/machines/x220/default.nix b/machines/x220/default.nix new file mode 100644 index 0000000..92e229b --- /dev/null +++ b/machines/x220/default.nix @@ -0,0 +1,74 @@ +{ config, pkgs, ... }: + +{ + imports = + [ # Include the results of the hardware scan. + ../base.nix + ../../modules/gnome.nix + ../x220-gnome/pass.nix + ./hardware-configuration.nix + ../x220-gnome/pn.nix + ]; + +# Enable networking + networking.networkmanager.enable = true; + +# Set your time zone. + time.timeZone = "Europe/Warsaw"; + +# Select internationalisation properties. + i18n.defaultLocale = "en_US.UTF-8"; + + i18n.extraLocaleSettings = { + LC_ALL = "en_US.UTF-8"; + LC_ADDRESS = "en_US.UTF-8"; + LC_IDENTIFICATION = "en_US.UTF-8"; + LC_MEASUREMENT = "en_US.UTF-8"; + LC_MONETARY = "en_US.UTF-8"; + LC_NAME = "en_US.UTF-8"; + LC_NUMERIC = "en_US.UTF-8"; + LC_PAPER = "en_US.UTF-8"; + LC_TELEPHONE = "en_US.UTF-8"; + LC_TIME = "en_US.UTF-8"; + }; + + programs.vim.defaultEditor = true; + programs.nano.enable = false; + programs.git.enable = true; + +# Allow unfree packages + nixpkgs.config.allowUnfree = true; + nix.settings.experimental-features = [ "flakes" "nix-command" ]; + +# List packages installed in system profile. To search, run: +# $ nix search wget + environment.systemPackages = with pkgs; [ +# vim # Do not forget to add an editor to edit configuration.nix! The Nano editor is also installed by default. +# wget + ]; + +# Some programs need SUID wrappers, can be configured further or are +# started in user sessions. +# programs.mtr.enable = true; +# programs.gnupg.agent = { +# enable = true; +# enableSSHSupport = true; +# }; + + +# Open ports in the firewall. +# networking.firewall.allowedTCPPorts = [ ... ]; +# networking.firewall.allowedUDPPorts = [ ... ]; +# Or disable the firewall altogether. +# networking.firewall.enable = false; + + +# This value determines the NixOS release from which the default +# settings for stateful data, like file locations and database versions +# on your system were taken. It‘s perfectly fine and recommended to leave +# this value at the release version of the first install of this system. +# Before changing this value read the documentation for this option +# (e.g. man configuration.nix or on https://nixos.org/nixos/options.html). + system.stateVersion = "24.05"; # Did you read the comment? + +} diff --git a/machines/x220/disko-config.nix b/machines/x220/disko-config.nix new file mode 100644 index 0000000..cdf31bd --- /dev/null +++ b/machines/x220/disko-config.nix @@ -0,0 +1,87 @@ +# USAGE in your configuration.nix. +# Update devices to match your hardware. +# { +# imports = [ ./disko-config.nix ]; +# disko.devices.disk.main.device = "/dev/sda"; +# disko.devices.disk.main.content.partitions.swap.size = "16G"; # Must be greater than RAM to enable hibernation +# } +{ lib, config, ... }: +{ + + boot.initrd.postDeviceCommands = '' + mkdir /btrfs_tmp + mount -t btrfs -o subvol=root,defaults ${config.disko.devices.disk.main.device} /btrfs_tmp + if [[ -e /btrfs_tmp/root ]]; 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" + fi + + delete_subvolume_recursively() { + IFS=$'\n' + for i in $(btrfs subvolume list -o "$1" | cut -f 9- -d ' '); do + delete_subvolume_recursively "/btrfs_tmp/$i" + done + btrfs subvolume delete "$1" + } + + for i in $(find /btrfs_tmp/old_roots/ -maxdepth 1 -mtime +30); do + delete_subvolume_recursively "$i" + done + + btrfs subvolume create /btrfs_tmp/root + umount /btrfs_tmp + ''; + + disko.devices = { + disk = { + main = { + device = "/dev/sda"; + type = "disk"; + content = { + type = "gpt"; + partitions = { + ESP = { + size = "1G"; + type = "EF00"; + content = { + type = "filesystem"; + format = "vfat"; + mountpoint = "/boot"; + mountOptions = [ "umask=0077" ]; + }; + }; + swap = { + size = "13G"; + content = { + type = "swap"; + discardPolicy = "both"; + resumeDevice = true; + }; + }; + data = { + size = "100%"; + content = { + type = "btrfs"; + extraArgs = [ "-f" ]; + mountpoint = "/partition-root"; + subvolumes = { + "/nix" = { + mountOptions = [ "compress=zstd" "noatime" ]; + mountpoint = "/nix"; + }; + "/persist" = { + mountpoint = "/persist"; + }; + "/root" = { + mountpoint = "/"; + }; + }; + }; + }; + }; + }; + }; + }; + }; +} diff --git a/machines/x220/hardware-configuration.nix b/machines/x220/hardware-configuration.nix new file mode 100644 index 0000000..3f696de --- /dev/null +++ b/machines/x220/hardware-configuration.nix @@ -0,0 +1,33 @@ +# 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. +{ config, lib, pkgs, modulesPath, ... }: + +{ + imports = + [ (modulesPath + "/installer/scan/not-detected.nix") + ./disko-config.nix + ]; + + boot.loader.systemd-boot.enable = true; + boot.loader.efi.canTouchEfiVariables = true; + + boot.initrd.availableKernelModules = [ "ehci_pci" "ahci" "sd_mod" "sdhci_pci" ]; + boot.initrd.kernelModules = [ ]; + boot.kernelModules = [ "kvm-intel" ]; + boot.extraModulePackages = [ ]; + + # 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 + # with explicit per-interface declarations with `networking.interfaces..useDHCP`. + networking.useDHCP = lib.mkDefault true; + # networking.interfaces.enp0s25.useDHCP = lib.mkDefault true; + # networking.interfaces.wlp3s0.useDHCP = lib.mkDefault true; + # networking.interfaces.wwp0s29u1u4i6.useDHCP = lib.mkDefault true; + + nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux"; + hardware.cpu.intel.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware; + + system.stateVersion = "24.05"; # Did you read the comment? +} -- cgit 1.4.1 From 146b495e3e0069f2e329b3075a7367b0d954ead8 Mon Sep 17 00:00:00 2001 From: Patryk Niedźwiedziński Date: Sat, 5 Oct 2024 21:05:47 +0200 Subject: Add impermanence --- flake.lock | 16 +++++++ flake.nix | 2 + machines/x220/default.nix | 34 +++++++++++++- machines/x220/disko-config.nix | 48 ++++++++++---------- machines/x220/disko.nix | 76 ++++++++++++++++++++++++++++++++ machines/x220/hardware-configuration.nix | 2 +- 6 files changed, 152 insertions(+), 26 deletions(-) create mode 100644 machines/x220/disko.nix diff --git a/flake.lock b/flake.lock index 5acc33b..82a17fc 100644 --- a/flake.lock +++ b/flake.lock @@ -41,6 +41,21 @@ "type": "github" } }, + "impermanence": { + "locked": { + "lastModified": 1727649413, + "narHash": "sha256-FA53of86DjFdeQzRDVtvgWF9o52rWK70VHGx0Y8fElQ=", + "owner": "nix-community", + "repo": "impermanence", + "rev": "d0b38e550039a72aff896ee65b0918e975e6d48e", + "type": "github" + }, + "original": { + "owner": "nix-community", + "repo": "impermanence", + "type": "github" + } + }, "nixos-hardware": { "locked": { "lastModified": 1728056216, @@ -77,6 +92,7 @@ "inputs": { "disko": "disko", "home-manager": "home-manager", + "impermanence": "impermanence", "nixos-hardware": "nixos-hardware", "nixpkgs": "nixpkgs" } diff --git a/flake.nix b/flake.nix index ed19fcc..3da2fb9 100644 --- a/flake.nix +++ b/flake.nix @@ -11,6 +11,7 @@ nixos-hardware.url = "github:NixOS/nixos-hardware/master"; disko.url = "github:nix-community/disko"; disko.inputs.nixpkgs.follows = "nixpkgs"; + impermanence.url = "github:nix-community/impermanence"; }; outputs = { self, nixpkgs, ... }@inputs: @@ -55,6 +56,7 @@ x220 = nixosSystem "x86_64-linux" "x220" [ inputs.nixos-hardware.nixosModules.lenovo-thinkpad-x220 inputs.disko.nixosModules.disko + inputs.impermanence.nixosModules.impermanence inputs.home-manager.nixosModules.default { home-manager.useGlobalPkgs = true; diff --git a/machines/x220/default.nix b/machines/x220/default.nix index 92e229b..a4914ca 100644 --- a/machines/x220/default.nix +++ b/machines/x220/default.nix @@ -47,6 +47,39 @@ # wget ]; + fileSystems."/persist".neededForBoot = true; + environment.persistence."/persistent" = { + enable = true; # NB: Defaults to true, not needed + hideMounts = true; + directories = [ + "/var/log" + "/var/lib/bluetooth" + "/var/lib/nixos" + "/var/lib/systemd/coredump" + "/etc/NetworkManager/system-connections" + { directory = "/var/lib/colord"; user = "colord"; group = "colord"; mode = "u=rwx,g=rx,o="; } + ]; + files = [ + "/etc/machine-id" + "/etc/shadow" + { file = "/var/keys/secret_file"; parentDirectory = { mode = "u=rwx,g=,o="; }; } + ]; + users.pn = { + directories = [ + "Downloads" + "Music" + "Pictures" + "Documents" + "Videos" + "VirtualBox VMs" + { directory = ".gnupg"; mode = "0700"; } + { directory = ".ssh"; mode = "0700"; } + { directory = ".local/share/keyrings"; mode = "0700"; } + ".local/share/direnv" + ]; + }; + }; + # Some programs need SUID wrappers, can be configured further or are # started in user sessions. # programs.mtr.enable = true; @@ -69,6 +102,5 @@ # this value at the release version of the first install of this system. # Before changing this value read the documentation for this option # (e.g. man configuration.nix or on https://nixos.org/nixos/options.html). - system.stateVersion = "24.05"; # Did you read the comment? } diff --git a/machines/x220/disko-config.nix b/machines/x220/disko-config.nix index cdf31bd..3512416 100644 --- a/machines/x220/disko-config.nix +++ b/machines/x220/disko-config.nix @@ -8,30 +8,30 @@ { lib, config, ... }: { - boot.initrd.postDeviceCommands = '' - mkdir /btrfs_tmp - mount -t btrfs -o subvol=root,defaults ${config.disko.devices.disk.main.device} /btrfs_tmp - if [[ -e /btrfs_tmp/root ]]; 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" - fi - - delete_subvolume_recursively() { - IFS=$'\n' - for i in $(btrfs subvolume list -o "$1" | cut -f 9- -d ' '); do - delete_subvolume_recursively "/btrfs_tmp/$i" - done - btrfs subvolume delete "$1" - } - - for i in $(find /btrfs_tmp/old_roots/ -maxdepth 1 -mtime +30); do - delete_subvolume_recursively "$i" - done - - btrfs subvolume create /btrfs_tmp/root - umount /btrfs_tmp - ''; + #boot.initrd.postDeviceCommands = '' + #mkdir /btrfs_tmp + #mount -t btrfs -o subvol=root,defaults ${config.disko.devices.disk.main.device} /btrfs_tmp + #if [[ -e /btrfs_tmp/root ]]; 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" + #fi +# + #delete_subvolume_recursively() { + #IFS=$'\n' + #for i in $(btrfs subvolume list -o "$1" | cut -f 9- -d ' '); do + #delete_subvolume_recursively "/btrfs_tmp/$i" + #done + #btrfs subvolume delete "$1" + #} +# + #for i in $(find /btrfs_tmp/old_roots/ -maxdepth 1 -mtime +30); do + #delete_subvolume_recursively "$i" + #done +# + #btrfs subvolume create /btrfs_tmp/root + #umount /btrfs_tmp + #''; disko.devices = { disk = { diff --git a/machines/x220/disko.nix b/machines/x220/disko.nix new file mode 100644 index 0000000..714cafa --- /dev/null +++ b/machines/x220/disko.nix @@ -0,0 +1,76 @@ +{ + device ? throw "Set this to your disk device, e.g. /dev/sda", + ... +}: { + disko.devices = { + disk.main = { + inherit device; + type = "disk"; + content = { + type = "gpt"; + partitions = { + boot = { + name = "boot"; + size = "1M"; + type = "EF02"; + }; + esp = { + name = "ESP"; + size = "500M"; + type = "EF00"; + content = { + type = "filesystem"; + format = "vfat"; + mountpoint = "/boot"; + }; + }; + swap = { + size = "13G"; + content = { + type = "swap"; + resumeDevice = true; + }; + }; + root = { + name = "root"; + size = "100%"; + content = { + type = "lvm_pv"; + vg = "root_vg"; + }; + }; + }; + }; + }; + lvm_vg = { + root_vg = { + type = "lvm_vg"; + lvs = { + root = { + size = "100%FREE"; + content = { + type = "btrfs"; + extraArgs = ["-f"]; + + subvolumes = { + "/root" = { + mountpoint = "/"; + }; + + "/persist" = { + mountOptions = ["subvol=persist" "noatime"]; + mountpoint = "/persist"; + }; + + "/nix" = { + mountOptions = ["subvol=nix" "noatime"]; + mountpoint = "/nix"; + }; + }; + }; + }; + }; + }; + }; + }; +} diff --git a/machines/x220/hardware-configuration.nix b/machines/x220/hardware-configuration.nix index 3f696de..9190ff7 100644 --- a/machines/x220/hardware-configuration.nix +++ b/machines/x220/hardware-configuration.nix @@ -6,7 +6,7 @@ { imports = [ (modulesPath + "/installer/scan/not-detected.nix") - ./disko-config.nix + (import ./disko.nix { device = "/dev/sda"; }) ]; boot.loader.systemd-boot.enable = true; -- cgit 1.4.1