diff --git a/hosts/game-laptop/default.nix b/hosts/game-laptop/default.nix index 96f9460..73f1b9e 100644 --- a/hosts/game-laptop/default.nix +++ b/hosts/game-laptop/default.nix @@ -1,6 +1,7 @@ _: { pkgs, config, + lib, ... }: { local = { @@ -15,13 +16,13 @@ _: { enable = true; kmscon.enable = true; }; + allowedUnfree = [ + "nvidia-x11" + "nvidia-persistenced" + "steam" + "steam-original" + ]; }; - nixpkgs.allowedUnfree = [ - "nvidia-x11" - "nvidia-persistenced" - "steam" - "steam-original" - ]; environment = { systemPackages = builtins.attrValues { inherit @@ -38,8 +39,8 @@ _: { ; }; etc = { - "jdks/17".source = "${pkgs.openjdk17}/bin"; - "jdks/8".source = "${pkgs.openjdk8}/bin"; + "jdks/17".source = lib.getBin pkgs.openjdk17; + "jdks/8".source = lib.getBin pkgs.openjdk8; }; }; networking = { diff --git a/hosts/game-laptop/disko.nix b/hosts/game-laptop/disko.nix index adbcd68..0874fd8 100644 --- a/hosts/game-laptop/disko.nix +++ b/hosts/game-laptop/disko.nix @@ -1,5 +1,4 @@ -{disko, ...}: {disks ? [], ...}: { - dummyvalue = {inherit disks;}; +{disko, ...}: { imports = [disko.nixosModules.disko]; disko.devices = { disk.nvme0n1 = { diff --git a/hosts/gerg-desktop/default.nix b/hosts/gerg-desktop/default.nix index 9d310f7..90072c5 100644 --- a/hosts/gerg-desktop/default.nix +++ b/hosts/gerg-desktop/default.nix @@ -1,6 +1,7 @@ {nvim-flake, ...}: { pkgs, config, + lib, ... }: { local = { @@ -18,6 +19,11 @@ enable = true; kmscon.enable = true; }; + allowedUnfree = [ + "nvidia-x11" + "steam" + "steam-original" + ]; }; boot.binfmt.emulatedSystems = ["aarch64-linux"]; hardware.nvidia = { @@ -31,11 +37,6 @@ videoDrivers = ["nvidia" "amdgpu"]; }; - nixpkgs.allowedUnfree = [ - "nvidia-x11" - "steam" - "steam-original" - ]; programs.direnv = { enable = true; loadInNixShell = false; @@ -67,8 +68,8 @@ inherit (nvim-flake.packages.${pkgs.system}) neovim; }; etc = { - "jdks/17".source = "${pkgs.openjdk17}/bin"; - "jdks/8".source = "${pkgs.openjdk8}/bin"; + "jdks/17".source = lib.getBin pkgs.openjdk17; + "jdks/8".source = lib.getBin pkgs.openjdk8; }; shellAliases.lint = "deadnix -e && statix fix && alejandra ./"; }; diff --git a/hosts/gerg-desktop/disko.nix b/hosts/gerg-desktop/disko.nix index 638fbd8..4731863 100644 --- a/hosts/gerg-desktop/disko.nix +++ b/hosts/gerg-desktop/disko.nix @@ -1,119 +1,70 @@ -{disko, ...}: {disks ? [], ...}: { - dummyvalue = {inherit disks;}; +{disko, ...}: {lib, ...}: let + disks = [ + "nvme-SHPP41-500GM_SSB4N6719101A4N22" + "nvme-SHPP41-500GM_SSB4N6719101A4N0E" + ]; +in { imports = [disko.nixosModules.disko]; disko.devices = { - disk = { - nvme0 = { - type = "disk"; - device = "/dev/disk/by-id/nvme-SHPP41-500GM_SSB4N6719101A4N22"; - content = { - type = "table"; - format = "gpt"; - partitions = [ - { - name = "boot"; - start = "0"; - end = "1M"; - part-type = "primary"; - flags = ["bios_grub"]; - } - { - name = "ESP"; - start = "1M"; - end = "1G"; - bootable = true; - content = { - type = "filesystem"; - format = "vfat"; - mountpoint = "/boot/efis/nvme-SHPP41-500GM_SSB4N6719101A4N22"; - }; - } - { - name = "zfsboot"; - start = "1G"; - end = "5G"; - content = { - type = "zfs"; - pool = "bpool"; - }; - } - { - name = "swap"; - start = "5G"; - end = "21G"; - content = { - type = "swap"; - randomEncryption = true; - }; - } - { - name = "zfsroot"; - start = "21G"; - end = "100%"; - content = { - type = "zfs"; - pool = "rpool"; - }; - } - ]; + disk = lib.mkMerge (map (x: { + ${x} = { + type = "disk"; + + device = "/dev/disk/by-id/${x}"; + content = { + type = "table"; + format = "gpt"; + partitions = [ + { + name = "boot"; + start = "0"; + end = "1M"; + part-type = "primary"; + flags = ["bios_grub"]; + } + { + name = "ESP"; + start = "1M"; + end = "1G"; + bootable = true; + content = { + type = "filesystem"; + format = "vfat"; + mountpoint = "/boot/efis/${x}"; + }; + } + { + name = "zfsboot"; + start = "1G"; + end = "5G"; + content = { + type = "zfs"; + pool = "bpool"; + }; + } + { + name = "swap"; + start = "5G"; + end = "21G"; + content = { + type = "swap"; + randomEncryption = true; + }; + } + { + name = "zfsroot"; + start = "21G"; + end = "100%"; + content = { + type = "zfs"; + pool = "rpool"; + }; + } + ]; + }; }; - }; - nvme1 = { - type = "disk"; - device = "/dev/disk/by-id/nvme-SHPP41-500GM_SSB4N6719101A4N0E"; - content = { - type = "table"; - format = "gpt"; - partitions = [ - { - name = "BIOS"; - start = "0"; - end = "1M"; - part-type = "primary"; - flags = ["bios_grub"]; - } - { - name = "ESP"; - start = "1M"; - end = "1G"; - bootable = true; - content = { - type = "filesystem"; - format = "vfat"; - mountpoint = "/boot/efis/nvme-SHPP41-500GM_SSB4N6719101A4N0E"; - }; - } - { - name = "zfsboot"; - start = "1G"; - end = "5G"; - content = { - type = "zfs"; - pool = "bpool"; - }; - } - { - name = "swap"; - start = "5G"; - end = "21G"; - content = { - type = "swap"; - randomEncryption = true; - }; - } - { - name = "zfsroot"; - start = "21G"; - end = "100%"; - content = { - type = "zfs"; - pool = "rpool"; - }; - } - ]; - }; - }; - }; + }) + disks); zpool = { rpool = { type = "zpool"; @@ -139,26 +90,31 @@ type = "zfs_fs"; options.mountpoint = "legacy"; mountpoint = "/"; + postCreateHook = "zfs snapshot root@empty"; }; "nix" = { type = "zfs_fs"; options.mountpoint = "legacy"; mountpoint = "/nix"; + postCreateHook = "zfs snapshot nix@empty"; }; "var" = { type = "zfs_fs"; options.mountpoint = "legacy"; mountpoint = "/var"; + postCreateHook = "zfs snapshot var@empty"; }; "persist" = { type = "zfs_fs"; options.mountpoint = "legacy"; mountpoint = "/persist"; + postCreateHook = "zfs snapshot persist@empty"; }; "home" = { type = "zfs_fs"; options.mountpoint = "legacy"; mountpoint = "/home"; + postCreateHook = "zfs snapshot home@empty"; }; }; }; @@ -185,6 +141,7 @@ type = "zfs_fs"; options.mountpoint = "legacy"; mountpoint = "/boot"; + postCreateHook = "zfs snapshot boot@empty"; }; }; }; diff --git a/hosts/gerg-desktop/spicetify.nix b/hosts/gerg-desktop/spicetify.nix index e6b0c29..09a439b 100644 --- a/hosts/gerg-desktop/spicetify.nix +++ b/hosts/gerg-desktop/spicetify.nix @@ -3,7 +3,7 @@ ex = spicePkgs.extensions; in { imports = [spicetify-nix.nixosModule]; - nixpkgs.allowedUnfree = ["spotify"]; + local.allowedUnfree = ["spotify"]; programs.spicetify = { enable = true; enabledExtensions = [ diff --git a/hosts/gerg-desktop/zfs.nix b/hosts/gerg-desktop/zfs.nix index ef2a3e4..d86e25d 100644 --- a/hosts/gerg-desktop/zfs.nix +++ b/hosts/gerg-desktop/zfs.nix @@ -10,13 +10,10 @@ _: { "L /etc/nixos/flake.nix - - - - /home/gerg/Projects/nixos/flake.nix" ]; #create machine-id for spotify - environment.etc = { - "machine-id".text = "b6431c2851094770b614a9cfa78fb6ea"; - }; + environment.etc."machine-id".text = "b6431c2851094770b614a9cfa78fb6ea"; #make sure the sopskey is found sops.age.sshKeyPaths = lib.mkForce ["/persist/ssh/ssh_host_ed25519_key"]; fileSystems."/persist".neededForBoot = true; - boot = { zfs = { devNodes = "/dev/disk/by-id/"; @@ -33,6 +30,13 @@ _: { availableKernelModules = ["hid_generic"]; #wipe / and /var on boot postDeviceCommands = lib.mkAfter '' + #destroy last snapshot + zfs destroy rpool/root@lastboot + zfs destroy rpool/var@lastboot + #create new snapshot + zfs snapshot rpool/root@lastboot + zfs snapshot rpool/var@lastboot + #wipe everything zfs rollback -r rpool/root@empty zfs rollback -r rpool/var@empty ''; @@ -62,9 +66,6 @@ _: { } ]; splashImage = null; - extraConfig = '' - GRUB_TIMEOUT_STYLE=hidden - ''; }; }; }; diff --git a/hosts/moms-laptop/disko.nix b/hosts/moms-laptop/disko.nix index 7ab412a..cded87c 100644 --- a/hosts/moms-laptop/disko.nix +++ b/hosts/moms-laptop/disko.nix @@ -1,5 +1,4 @@ -{disko, ...}: {disks ? [], ...}: { - dummyvalue = {inherit disks;}; +{disko, ...}: { imports = [disko.nixosModules.disko]; disko.devices = { disk.sda = { diff --git a/hosts/moms-laptop/printing.nix b/hosts/moms-laptop/printing.nix index 47957d8..db3084b 100644 --- a/hosts/moms-laptop/printing.nix +++ b/hosts/moms-laptop/printing.nix @@ -1,5 +1,5 @@ _: {pkgs, ...}: { - nixpkgs.allowedUnfree = ["hplip"]; + local.allowedUnfree = ["hplip"]; environment.systemPackages = [ pkgs.gimp (pkgs.xsane.override {gimpSupport = true;}) diff --git a/modules/boot/misc.nix b/modules/boot/misc.nix index 6fa96be..45eb58a 100644 --- a/modules/boot/misc.nix +++ b/modules/boot/misc.nix @@ -44,7 +44,12 @@ logo = "${self.packages.${pkgs.system}.images}/logo.png"; }; loader = { - grub.configurationLimit = 10; + grub = { + configurationLimit = 10; + extraConfig = '' + GRUB_TIMEOUT_STYLE=hidden + ''; + }; systemd-boot = { configurationLimit = 10; enable = lib.mkDefault true; diff --git a/modules/direnv.nix b/modules/direnv.nix deleted file mode 100644 index e00d4b4..0000000 --- a/modules/direnv.nix +++ /dev/null @@ -1,146 +0,0 @@ -_: { - lib, - config, - pkgs, - ... -}: let - cfg = config.programs.direnv; -in { - options.programs.direnv = { - enable = lib.mkEnableOption (lib.mdDoc '' - direnv integration. Takes care of both installation and - setting up the sourcing of the shell. Additionally enables nix-direnv - integration. Note that you need to logout and login for this change to apply. - ''); - - package = lib.mkPackageOptionMD pkgs "direnv" {}; - - direnvrcExtra = lib.mkOption { - type = lib.types.lines; - default = ""; - example = '' - export FOO="foo" - echo "loaded direnv!" - ''; - description = lib.mdDoc '' - Extra lines to append to the sourced direnvrc - ''; - }; - - silent = lib.mkEnableOption (lib.mdDoc '' - the hiding of direnv logging - ''); - - persistDerivations = - (lib.mkEnableOption (lib.mdDoc '' - setting keep-derivations and keep-outputs to true - to prevent shells from getting garbage collected - '')) - // { - default = true; - }; - - loadInNixShell = - lib.mkEnableOption (lib.mdDoc '' - loading direnv only outside of `nix-shell` `nix shell` or `nix develop` - '') - // { - default = true; - }; - - nix-direnv = { - enable = - (lib.mkEnableOption (lib.mdDoc '' - a faster, persistent implementation of use_nix and use_flake, to replace the built-in one - '')) - // { - default = true; - }; - - package = lib.mkPackageOptionMD pkgs "nix-direnv" {}; - }; - }; - - config = lib.mkIf cfg.enable { - programs = { - zsh.interactiveShellInit = '' - if ${lib.boolToString cfg.loadInNixShell} || printenv PATH | grep -vqc '/nix/store'; then - eval "$(${lib.getExe cfg.package} hook zsh)" - fi - ''; - - #$NIX_GCROOT for "nix develop" https://github.com/NixOS/nix/blob/6db66ebfc55769edd0c6bc70fcbd76246d4d26e0/src/nix/develop.cc#L530 - #$IN_NIX_SHELL for "nix-shell" - bash.interactiveShellInit = '' - if ${lib.boolToString cfg.loadInNixShell} || [ -z "$IN_NIX_SHELL$NIX_GCROOT$(printenv PATH | grep '/nix/store')" ] ; then - eval "$(${lib.getExe cfg.package} hook bash)" - fi - ''; - - fish.interactiveShellInit = '' - if ${lib.boolToString cfg.loadInNixShell}; - or printenv PATH | grep -vqc '/nix/store'; - ${lib.getExe cfg.package} hook fish | source - end - ''; - }; - - nix.settings = lib.mkIf cfg.persistDerivations { - keep-outputs = true; - keep-derivations = true; - }; - - environment = { - systemPackages = - #direnv has a fish library which sources direnv for some reason - if cfg.loadInNixShell - then [cfg.package] - else [ - (cfg.package.overrideAttrs (old: { - installPhase = - (old.installPhase or "") - + '' - rm -rf $out/share/fish - ''; - })) - ]; - - variables = { - DIRENV_CONFIG = "/etc/direnv"; - DIRENV_LOG_FORMAT = lib.mkIf cfg.silent ""; - }; - - etc = { - "direnv/direnvrc".text = '' - ${lib.optionalString cfg.nix-direnv.enable '' - #Load nix-direnv - source ${cfg.nix-direnv.package}/share/nix-direnv/direnvrc - ''} - - #Load direnvrcExtra - ${cfg.direnvrcExtra} - - #Load user-configuration if present (~/.direnvrc or ~/.config/direnv/direnvrc) - direnv_config_dir_home="''${DIRENV_CONFIG_HOME:-''${XDG_CONFIG_HOME:-$HOME/.config}/direnv}" - if [[ -f $direnv_config_dir_home/direnvrc ]]; then - source "$direnv_config_dir_home/direnvrc" >&2 - elif [[ -f $HOME/.direnvrc ]]; then - source "$HOME/.direnvrc" >&2 - fi - - unset direnv_config_dir_home - ''; - - "direnv/lib/zz-user.sh".text = '' - direnv_config_dir_home="''${DIRENV_CONFIG_HOME:-''${XDG_CONFIG_HOME:-$HOME/.config}/direnv}" - - for lib in "$direnv_config_dir_home/lib/"*.sh; do - source "$lib" - done - - unset direnv_config_dir_home - ''; - }; - }; - }; -} diff --git a/modules/misc.nix b/modules/misc.nix index 4f3b525..20ff6c2 100644 --- a/modules/misc.nix +++ b/modules/misc.nix @@ -4,18 +4,13 @@ _: { pkgs, ... }: { - options = { - dummyvalue = lib.mkOption { - default = {}; - }; - nixpkgs.allowedUnfree = lib.mkOption { - type = lib.types.listOf lib.types.string; - default = []; - }; + options.local.allowedUnfree = lib.mkOption { + type = lib.types.listOf lib.types.string; + default = []; }; config = { - nixpkgs.config.allowUnfreePredicate = pkg: builtins.elem (lib.getName pkg) config.nixpkgs.allowedUnfree; + nixpkgs.config.allowUnfreePredicate = pkg: builtins.elem (lib.getName pkg) config.local.allowedUnfree; environment.defaultPackages = lib.mkForce (builtins.attrValues { inherit