Find a file
2022-05-12 09:39:50 -05:00
alacritty updates and a lot of em 2022-04-26 12:40:35 -05:00
awesome Starting my literate config and hiding secrets 2022-05-08 06:16:34 -05:00
bpytop idk 2022-04-19 09:49:33 -05:00
chemacs Adding chemacs, waybar, and river 2021-02-16 11:17:01 -06:00
dunst making more widgets and better spacing 2021-08-18 17:05:04 -05:00
espanso I HAVE NO IDEA! 2021-12-10 12:02:06 -06:00
eww making rofi work a lil better 2021-09-27 17:13:21 -05:00
firefox/chrome making firefox work better with mouse by letting tabs show 2022-04-05 11:13:09 -05:00
fish Organizing 2022-05-12 09:39:50 -05:00
flameshot hello 2022-04-22 14:38:24 -05:00
imv fixing firefox css 2022-03-11 07:16:33 -06:00
kanshi a lot of laptop changes 2021-12-06 06:07:34 -06:00
kmonad I got a little crazy here. a lot of laptop poop 2021-09-22 09:58:13 -05:00
leftwm added awesome leftwm and picom 2020-05-25 05:49:53 -05:00
lolcate Browser changes 2022-01-03 12:30:23 -06:00
macchina updates and a lot of em 2022-04-26 12:40:35 -05:00
mako I got a little crazy here. a lot of laptop poop 2021-09-22 09:58:13 -05:00
mpv Organizing 2022-05-12 09:39:50 -05:00
nyxt Also a lot of stuff 2022-03-24 13:55:34 -05:00
oguri wayfire edits 2021-09-27 17:14:29 -05:00
pkgs adding lightlyshaders 2022-05-10 15:07:53 -05:00
polybar adding dunst 2021-01-28 10:13:53 -06:00
qutebrowser adding nix configs 2022-05-06 11:39:51 -05:00
rbw adding nix configs 2022-05-06 11:39:51 -05:00
river I got a little crazy here. a lot of laptop poop 2021-09-22 09:58:13 -05:00
rofi adding nix configs 2022-05-06 11:39:51 -05:00
scripts making some basic changes to syl and user 2022-05-07 14:21:11 -05:00
surfingkeys updates and a lot of em 2022-04-26 12:40:35 -05:00
sway fixing firefox css 2022-03-11 07:16:33 -06:00
sxiv/exec a lot of random poop 2021-10-11 09:18:45 -05:00
system Organizing 2022-05-12 09:39:50 -05:00
systemd/user this is a lot of hoopla 2022-03-24 13:53:59 -05:00
taiwins Adding kanshi, wayfire, taiwins configs 2021-04-19 06:21:23 -05:00
tridactyl updates and a lot of em 2022-04-26 12:40:35 -05:00
user Starting my literate config and hiding secrets 2022-05-08 06:16:34 -05:00
waybar fixing firefox css 2022-03-11 07:16:33 -06:00
wayfire updates and a lot of em 2022-04-26 12:40:35 -05:00
wofi I got a little crazy here. a lot of laptop poop 2021-09-22 09:58:13 -05:00
.gitmodules Starting my literate config and hiding secrets 2022-05-08 06:16:34 -05:00
.mbsyncrc Organizing packages and getting some files better setup 2022-05-10 15:01:47 -05:00
flake.lock making some basic changes to syl and user 2022-05-07 14:21:11 -05:00
flake.nix Starting my literate config and hiding secrets 2022-05-08 06:16:34 -05:00
greenclip.toml lots 2022-04-11 17:33:12 -05:00
libinput-gestures.conf I got a little crazy here. a lot of laptop poop 2021-09-22 09:58:13 -05:00
picom.conf updates and a lot of em 2022-04-26 12:40:35 -05:00
README.org Organizing 2022-05-12 09:39:50 -05:00
xinitrc adding a bunch of pointless stuff 2021-08-26 17:59:17 -05:00
Xresources adding a bunch of pointless stuff 2021-08-26 17:59:17 -05:00

Readme

Welcome

This repository contains all of my dotfiles to the many programs I like to use on Linux. This is primarily built with NixOS and Emacs. This is done through literate programming. So basically this README file has all the source code for the entire system. (or at least it will once I get it all finished)

NixOS

The biggest part of this is through NixOS. NixOS is a declarative way of building an OS for Linux and allows an immutable and reproducible system. I really like that last part. I enjoy my config to be the same no matter how many machines I place it on. I'd also one day like this to be modular so that I'll have some switches that can turn on and off certain features.

Let's start with the core of this, the flake.

flake.nix

This is not a wholly complex setup with flakes. I've seen far more complex and unique ones. But the basic idea is to have a few of our inputs setup to bring in the expected pkgs and then output things to the correct system/user.

Note how in the outputs I do have some duplicated code. That is will disappear as I grow more accustomed to flakes and nix. Anyhow, the important things to gather in this file are that I'm making sure to use non-free software by making pkgs config = { allowUnfree = true; }. This ensures that things like the non-free linux kernel are accessible.

Also, syl is my laptop and kaladin is my desktop. So those are going to be unique in the future.

Both include the home-manager module. Primarily I chose that route so that I could use the same command to update the entire system without needing to update the system and user stuff seperately.

{
  description = "The Flake";

  inputs = {
    nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable";
    home-manager.url = "github:nix-community/home-manager/master";
    home-manager.inputs.nixpkgs.follows = "nixpkgs";
  };

  outputs = { nixpkgs, home-manager, ... }:
    let
      system = "x86_64-linux";
      username = "chris";

      pkgs = import nixpkgs {
        inherit system;
        config = { allowUnfree = true; };
      };

      lib = nixpkgs.lib;
    in  {
      nixosConfigurations = {
        syl = lib.nixosSystem {
          inherit system;
          modules = [
            ./system/syl/configuration.nix
            home-manager.nixosModules.home-manager
          {
            home-manager.useGlobalPkgs = true;
            home-manager.useUserPackages = true;
            home-manager.users.chris = import ./user/home.nix;
          }
          ];
        };
        kaladin = lib.nixosSystem {
          inherit system;
          modules = [
            ./system/kaladin/configuration.nix
            home-manager.nixosModules.home-manager
          {
            home-manager.useGlobalPkgs = true;
            home-manager.useUserPackages = true;
            home-manager.users.chris = import ./user/home.nix;
          }
          ];
        };
      };
    };
}

Syl

Syl is my laptop and has some configuration unique to that. In particular, it's a Framework Laptop. Honestly a great piece of tech. Love it.

Notice how I am including all of my software here. It may be a big file, but having all of it in one place means I can easily grok through it and remove something.

{ config, pkgs, callPackage, ... }:

{
  imports =
    [ # Include the results of the hardware scan.
      ./hardware-configuration.nix
    ];

  nix = {
    extraOptions = "experimental-features = nix-command flakes";
    package = pkgs.nixFlakes;
  };

  # Use the systemd-boot EFI boot loader.
  boot.kernelPackages = pkgs.linuxPackages_zen;
  boot.loader.systemd-boot.enable = true;
  boot.loader.efi.canTouchEfiVariables = true;

  nixpkgs.config.allowUnfree = true;
  boot.kernelParams = [ "mem_sleep_default=deep" ];

  networking.hostName = "syl"; # Define your hostname.
  networking.networkmanager.enable = true;
  # networking.wireless.enable = true;  # Enables wireless support via wpa_supplicant.

  # Set your time zone.
  time.timeZone = "America/Chicago";

  # The global useDHCP flag is deprecated, therefore explicitly set to false here.
  # Per-interface useDHCP will be mandatory in the future, so this generated config
  # replicates the default behaviour.
  networking.useDHCP = false;
  networking.interfaces.wlp170s0.useDHCP = true;

  # Select internationalisation properties.
  i18n.defaultLocale = "en_US.UTF-8";

  # Set default shell to be dash for speed
  # environment.binsh = "${pkgs.dash}/bin/dash";
  environment.variables = {
    EDITOR = "emacsclient -t";
    VISUAL = "emacsclient -c";
  };

  hardware.uinput.enable = true;

  nixpkgs.config.packageOverrides = pkgs: {
    vaapiIntel = pkgs.vaapiIntel.override { enableHybridCodec = true; };
  };

  hardware.opengl = {
    enable = true;
    extraPackages = with pkgs; [
      intel-media-driver # LIBVA_DRIVER_NAME=iHD
      vaapiIntel         # LIBVA_DRIVER_NAME=i965 (older but works better for Firefox/Chromium)
      vaapiVdpau
      libvdpau-va-gl
    ];
  };
  # Enable the X11 windowing system.
  services.xserver = {
    enable = true;
    windowManager.awesome = {
      enable = true;
      package = pkgs.myAwesome;
    };
  };

  # Enable the Plasma 5 Desktop Environment.
  services.xserver.displayManager.sddm.enable = true;
  services.xserver.desktopManager.plasma5.enable = true;
  
  # Configure keymap in X11
  services.xserver.layout = "us";
  # services.xserver.xkbOptions = "eurosign:e";

  # Enable CUPS to print documents.
  services.printing.enable = true;
  services.printing.drivers = [ pkgs.gutenprint pkgs.gutenprintBin pkgs.hplipWithPlugin ]; 

  # Enabel fingerprint
  services.fprintd.enable = true;

  # Enable sound.
  security.rtkit.enable = true;
  services.pipewire = {
    enable = true;
    alsa.enable = true;
    alsa.support32Bit = true;
    pulse.enable = true;
    wireplumber.enable = true;
  };

  # Needed for some pipewire progs
  programs.dconf.enable = true;

  # Turn on flatpak
  services.flatpak.enable = true;

  # Some other things
  services.thermald.enable = true;
  services.tlp = {
    enable = true;
    settings = {
      CPU_SCALING_GOVERNOR_ON_AC="performance";
      CPU_SCALING_GOVERNOR_ON_BAT="powersave";
      CPU_ENERGY_PERF_POLICY_ON_AC="balance_performance";
      CPU_ENERGY_PERF_POLICY_ON_BAT="power";
      SCHED_POWERSAVE_ON_AC=0;
      SCHED_POWERSAVE_ON_BAT=1;
      START_CHARGE_THRESH_BAT1=70;
      STOP_CHARGE_THRESH_BAT1=80;
      USB_ALLOWLIST="32ac:0002";
    };
  };

  services.usbmuxd.enable = true;
  services.fstrim.enable = true;

  # Enable touchpad support (enabled default in most desktopManager).
  services.xserver.libinput.enable = true;

  programs.fish.enable = true;
  programs.zsh.enable = true;
  # Define a user account. Don't forget to set a password with passwd.
  users.users.chris = {
    isNormalUser = true;
    extraGroups = [ "wheel" "networkmanager" "input" "uinput" ];
  };

  programs.partition-manager.enable = true;
  programs.kdeconnect.enable = true;

  security.pam.services.kwallet = {
    name = "kwallet";
    enableKwallet = true;
  };
  security.pam.services.sddm.enableKwallet = true;

  virtualisation.waydroid.enable = true;

  # List packages installed in system profile. To search, run:
  # $ nix search wget
  environment.systemPackages = with pkgs; [
    vim
    wget
    killall
    discover
    lightly-qt
    pinentry
    pinentry-qt
    unzip
    unrar
    p7zip
    zip
    gzip
    usbutils
    binutils
    hunspell
    hunspellDicts.en_US
    git
    openssh
    samba
    ark
    dash
    kget
    krename
    kwallet-pam
    plasma5Packages.kwallet
    libimobiledevice
    sddm-kcm
    ydotool
    bottles
    exa
    mpv
    yt-dlp
    rofi-emoji
    nerdfonts
    latte-dock
    bat
    libsForQt5.bismuth
    libnotify
    rofi-wayland
    ripgrep
    fd
    plocate
    bc 
    sysstat
    procs
    pandoc
    papirus-icon-theme
    phinger-cursors
    plasma-hud
    kde-cli-tools
    macchina
    gzip 
    htop
    btop
    firefox
    kate
    kdialog
    openlp
    libreoffice-fresh
    vlc
    neochat
    haskellPackages.greenclip
    pulsemixer
    any-nix-shell
    wtype
    spotdl
    kdenlive
    ffmpeg
    neofetch
    xdotool
    # Dev tools
    nix-index
    meson
    ninja
    gnumake
    gcc
    gdb
    clang
    cmake 
    extra-cmake-modules
    pkg-config
    # Libraries
    qt5.qtbase
    qt5.qtquickcontrols2
    qt5.qtx11extras
    libsForQt5.kirigami2
    libsForQt5.ki18n
    libsForQt5.kcoreaddons
    fennel
  ];

  # EMACS
  services.emacs.package = with pkgs; ((emacsPackagesFor emacsPgtkNativeComp).emacsWithPackages (epkgs: [ epkgs.vterm epkgs.magit epkgs.pdf-tools ]));
  nixpkgs.overlays = [

    (import (builtins.fetchTarball {
      url = https://github.com/nix-community/emacs-overlay/archive/master.tar.gz;
      sha256 = "1pd14gigm5bznzd8k88dq9scicw1zqknm87bnqmd0z556g9ir60f";
    }))

    (self: super:
      {
        myAwesome = super.awesome.overrideAttrs (old: rec {
          pname = "myAwesome";
          version = "git-20220508-c539e0e";
          src = super.fetchFromGitHub {
            owner = "awesomeWM";
            repo = "awesome";
            rev = "c539e0e4350a42f813952fc28dd8490f42d934b3";
            sha256 = "EDAL7NnLF2BiVI8DAlEciiZtDmwXOzCPypGTrlN/OoQ=";
          };
        });
      }
    )
  ];
  services.emacs.enable = true;

  # 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;
  # };

  # List services that you want to enable:

  # Enable the OpenSSH daemon.
  # services.openssh.enable = 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. Its 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 = "21.11"; # Did you read the comment?

}

Now in the hardware-configuration.nix file, I didn't change much because I wanted to keep it roughly the same in case things do get overwritten, but this is another nice feature of literate programming, should things change in the /etc folder, I'll have this readme as a backup of what it was before the changes.

{ config, lib, pkgs, modulesPath, ... }:

{
  imports =
    [ (modulesPath + "/installer/scan/not-detected.nix")
    ];

  boot.initrd.availableKernelModules = [ "xhci_pci" "thunderbolt" "nvme" "usb_storage" "sd_mod" ];
  boot.initrd.kernelModules = [ ];
  boot.kernelModules = [ "kvm-intel" "acpi_call" ];
  boot.extraModulePackages = with config.boot.kernelPackages; [ acpi_call ];

  fileSystems."/" =
    { device = "/dev/disk/by-uuid/500ad375-8fe0-4888-8f57-ee9d5ea1fd9f";
      fsType = "btrfs";
      options = [ "subvol=root" "noatime" "nodiratime" "ssd" "compress=zstd" "space_cache" ];
    };

  boot.initrd.luks.devices."enc".device = "/dev/disk/by-uuid/5db54453-8ae9-4ba0-b381-01255ac7d7f7";

  fileSystems."/home" =
    { device = "/dev/disk/by-uuid/500ad375-8fe0-4888-8f57-ee9d5ea1fd9f";
      fsType = "btrfs";
      options = [ "subvol=home" "noatime" "nodiratime" "ssd" "compress=zstd" "space_cache" ];
    };

  fileSystems."/nix" =
    { device = "/dev/disk/by-uuid/500ad375-8fe0-4888-8f57-ee9d5ea1fd9f";
      fsType = "btrfs";
      options = [ "subvol=nix" "noatime" "nodiratime" "ssd" "compress=zstd" "space_cache" ];
    };

  fileSystems."/var/log" =
    { device = "/dev/disk/by-uuid/500ad375-8fe0-4888-8f57-ee9d5ea1fd9f";
      fsType = "btrfs";
      options = [ "subvol=log" "noatime" "nodiratime" "ssd" "compress=zstd" "space_cache" ];
      neededForBoot = true;
    };

  fileSystems."/boot" =
    { device = "/dev/disk/by-uuid/E9C0-3E97";
      fsType = "vfat";
    };

  swapDevices =
    [ { device = "/dev/disk/by-uuid/4f3c6d93-3be2-480c-8be8-fb9200c06b0c"; }
    ];

  powerManagement.cpuFreqGovernor = lib.mkDefault "powersave";
  hardware.cpu.intel.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware;
  # high-resolution display
  hardware.video.hidpi.enable = lib.mkDefault true;
}

Kaladin

Kaladin is my desktop machine. A powerhouse for the most part with a recent i7 and 64gb of memory and an Nvidia 1080. Basically I use this for video editing, animation, and some other things. Here is it's configuration.

{ config, pkgs, ... }:

{
  imports =
    [ # Include the results of the hardware scan.
      ./hardware-configuration.nix
    ];

  nix = {
    extraOptions = "experimental-features = nix-command flakes";
    package = pkgs.nixFlakes;
  };

  # Use the systemd-boot EFI boot loader.
  boot.kernelPackages = pkgs.linuxPackages_zen;
  boot.loader.systemd-boot.enable = true;
  boot.loader.efi.canTouchEfiVariables = true;

  nixpkgs.config.allowUnfree = true;

  boot.kernelParams = [ "mem_sleep_default=deep" ];

  networking.hostName = "kaladin"; # Define your hostname.
  networking.networkmanager.enable = true;
  # networking.wireless.enable = true;  # Enables wireless support via wpa_supplicant.

  # Set your time zone.
  time.timeZone = "America/Chicago";

  # The global useDHCP flag is deprecated, therefore explicitly set to false here.
  # Per-interface useDHCP will be mandatory in the future, so this generated config
  # replicates the default behaviour.
  networking.useDHCP = false;
  networking.interfaces.enp0s31f6.useDHCP = true;
  networking.interfaces.wlp7s0.useDHCP = true;


  # Select internationalisation properties.
  i18n.defaultLocale = "en_US.UTF-8";

  # Set default shell to be dash for speed
  environment.binsh = "${pkgs.dash}/bin/dash";

  # NVIDIA
  services.xserver.videoDrivers = [ "nvidia" ];
  hardware.opengl.enable = true;

  # Enable the X11 windowing system.
  services.xserver.enable = true;

  # Enable the Plasma 5 Desktop Environment.
  services.xserver.displayManager.sddm.enable = true;
  services.xserver.desktopManager.plasma5.enable = true;
  
  # Configure keymap in X11
  services.xserver.layout = "us";
  # services.xserver.xkbOptions = "eurosign:e";

  # Enable CUPS to print documents.
  services.printing.enable = true;
  services.printing.drivers = [ pkgs.gutenprint pkgs.gutenprintBin pkgs.hplipWithPlugin ]; 

  # Enabel fingerprint
  services.fprintd.enable = true;

  # Enable sound.
  security.rtkit.enable = true;
  services.pipewire = {
    enable = true;
    alsa.enable = true;
    alsa.support32Bit = true;
    pulse.enable = true;
    wireplumber.enable = true;
  };

  # Needed for some pipewire progs
  programs.dconf.enable = true;

  # Turn on flatpak
  services.flatpak.enable = true;

  services.usbmuxd.enable = true;
  services.fstrim.enable = true;

  # Enable touchpad support (enabled default in most desktopManager).
  services.xserver.libinput.enable = true;

  #programs.fish.enable = true;
  programs.zsh.enable = true;
  # Define a user account. Don't forget to set a password with passwd.
  users.users.chris = {
    isNormalUser = true;
    extraGroups = [ "wheel" "networkmanager" "input" ]; # Enable sudo for the user.
  };

  programs.partition-manager.enable = true;
  programs.kdeconnect.enable = true;

  security.pam.services.kwallet = {
    name = "kwallet";
    enableKwallet = true;
  };
  security.pam.services.sddm.enableKwallet = true;

  virtualisation.waydroid.enable = true;

  # List packages installed in system profile. To search, run:
  # $ nix search wget
  environment.systemPackages = with pkgs; [
    vim
    wget
    killall
    discover
    lightly-qt
    pinentry
    pinentry-qt
    unzip
    unrar
    p7zip
    zip
    gzip
    usbutils
    binutils
    hunspell
    hunspellDicts.en_US
    git
    openssh
    samba
    ark
    dash
    kget
    krename
    kwallet-pam
    plasma5Packages.kwallet
    libimobiledevice
    sddm-kcm
    ydotool
    bottles
    exa
    mpv
    yt-dlp
    rofi-emoji
    nerdfonts
    latte-dock
    bat
    libsForQt5.bismuth
    libnotify
    rofi-wayland
    ripgrep
    fd
    plocate
    bc 
    sysstat
    procs
    pandoc
    papirus-icon-theme
    phinger-cursors
    plasma-hud
    kde-cli-tools
    macchina
    gzip 
    htop
    btop
    firefox
    kate
    kdialog
    openlp
    libreoffice-fresh
    vlc
    neochat
    haskellPackages.greenclip
    pulsemixer
    any-nix-shell
    wtype
    spotdl
    kdenlive
    blender
    ffmpeg
    neofetch
    xdotool
    # Dev tools
    nix-index
    meson
    ninja
    gnumake
    gcc
    gdb
    clang
    cmake 
    extra-cmake-modules
    pkg-config
    # Libraries
    qt5.qtbase
    qt5.qtquickcontrols2
    qt5.qtx11extras
    libsForQt5.kirigami2
    libsForQt5.ki18n
    libsForQt5.kcoreaddons
    fennel
  ];

  # EMACS
  services.emacs.package = with pkgs; ((emacsPackagesFor emacsPgtkNativeComp).emacsWithPackages (epkgs: [ epkgs.vterm epkgs.magit epkgs.pdf-tools ]));
  nixpkgs.overlays = [

    (import (builtins.fetchTarball {
      url = https://github.com/nix-community/emacs-overlay/archive/master.tar.gz;
      sha256 = "1pd14gigm5bznzd8k88dq9scicw1zqknm87bnqmd0z556g9ir60f";
    }))

    (self: super:
      {
        myAwesome = super.awesome.overrideAttrs (old: rec {
          pname = "myAwesome";
          version = "git-20220508-c539e0e";
          src = super.fetchFromGitHub {
            owner = "awesomeWM";
            repo = "awesome";
            rev = "c539e0e4350a42f813952fc28dd8490f42d934b3";
            sha256 = "EDAL7NnLF2BiVI8DAlEciiZtDmwXOzCPypGTrlN/OoQ=";
          };
        });
      }
    )
  ];
  services.emacs.enable = true;

  # 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;
  # };

  # List services that you want to enable:

  # Enable the OpenSSH daemon.
  services.openssh.enable = 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. Its 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 = "21.11"; # Did you read the comment?

}

And here is it's hardware config.

{ config, lib, pkgs, modulesPath, ... }:

{
  imports =
    [ (modulesPath + "/installer/scan/not-detected.nix")
    ];

  boot.initrd.availableKernelModules = [ "xhci_pci" "ahci" "nvme" "usbhid" "usb_storage" "sd_mod" "sr_mod" ];
  boot.initrd.kernelModules = [ ];
  boot.kernelModules = [ "kvm-intel" ];
  boot.extraModulePackages = [ ];

  fileSystems."/" =
    { device = "/dev/nvme0n1p2";
      fsType = "btrfs";
      options = [ "subvol=root" "noatime" "ssd" "space_cache" "compress=zstd" ];
    };

  fileSystems."/home" =
    { device = "/dev/nvme0n1p2";
      fsType = "btrfs";
      options = [ "subvol=home" "noatime" "ssd" "space_cache" "compress=zstd" ];
    };

  fileSystems."/boot" =
    { device = "/dev/disk/by-uuid/F9BD-D185";
      fsType = "vfat";
    };

  swapDevices = [ ];

  powerManagement.cpuFreqGovernor = lib.mkDefault "powersave";
  hardware.cpu.intel.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware;
}

Kaladin is still not fullly setup, so I'll be working on that more and more as time goes.

Thanks!

EXTRA

Possible efibootmgr command to make efistub work on desktop

efibootmgr --disk /dev/nvme0n1 --part 1 --create --label "Arch Linux" --loader /boot/vmlinuz-linux-zen --unicode 'root=PARTUUID=d920ee9c-3b42-4c83-9c4c-a33406421ed1 rootflags=subvol=@ rw noatime nodiratime compress=zstd:3 ssd space_cache initrd=\initramfs-linux-zen.img' --verbose