From 9b44ab530bba21014d11585583fd41a51d7a3e3f Mon Sep 17 00:00:00 2001 From: blahai Date: Mon, 17 Feb 2025 20:22:15 +0200 Subject: [PATCH] add bootloader modules --- flake.lock | 158 ++++++++++++++++++--- flake.nix | 9 ++ modules/nixos/boot/default.nix | 5 + modules/nixos/boot/loader/default.nix | 21 +++ modules/nixos/boot/loader/grub.nix | 31 ++++ modules/nixos/boot/loader/refind.nix | 18 +++ modules/nixos/boot/loader/systemd-boot.nix | 18 +++ modules/nixos/default.nix | 1 + modules/nixos/remote-modules.nix | 6 + 9 files changed, 251 insertions(+), 16 deletions(-) create mode 100644 modules/nixos/boot/default.nix create mode 100644 modules/nixos/boot/loader/default.nix create mode 100644 modules/nixos/boot/loader/grub.nix create mode 100644 modules/nixos/boot/loader/refind.nix create mode 100644 modules/nixos/boot/loader/systemd-boot.nix diff --git a/flake.lock b/flake.lock index e1e89cc..dbfbe11 100644 --- a/flake.lock +++ b/flake.lock @@ -56,6 +56,33 @@ "type": "github" } }, + "chaotic": { + "inputs": { + "fenix": "fenix", + "flake-schemas": "flake-schemas", + "home-manager": [ + "nixpkgs" + ], + "jovian": "jovian", + "nixpkgs": [ + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1739799871, + "narHash": "sha256-Nn5RQDvl+pK0V1sn5R88j1cyqm81VFO9zxHGYk0YIBo=", + "owner": "chaotic-cx", + "repo": "nyx", + "rev": "f450c658f012cdf93fc4d0e85a208a23a27efadb", + "type": "github" + }, + "original": { + "owner": "chaotic-cx", + "ref": "nyxpkgs-unstable", + "repo": "nyx", + "type": "github" + } + }, "darwin": { "inputs": { "nixpkgs": [ @@ -115,6 +142,28 @@ "type": "github" } }, + "fenix": { + "inputs": { + "nixpkgs": [ + "chaotic", + "nixpkgs" + ], + "rust-analyzer-src": "rust-analyzer-src" + }, + "locked": { + "lastModified": 1739687593, + "narHash": "sha256-K7+n5+W2OrqEjeVb4422YxwNw1m4lCfnd+QWCnm+Dgs=", + "owner": "nix-community", + "repo": "fenix", + "rev": "a712b739a49e10fe73de366a42a43b2714e41bfc", + "type": "github" + }, + "original": { + "owner": "nix-community", + "repo": "fenix", + "type": "github" + } + }, "flake-compat": { "flake": false, "locked": { @@ -167,6 +216,20 @@ "type": "github" } }, + "flake-schemas": { + "locked": { + "lastModified": 1721999734, + "narHash": "sha256-G5CxYeJVm4lcEtaO87LKzOsVnWeTcHGKbKxNamNWgOw=", + "rev": "0a5c42297d870156d9c57d8f99e476b738dcd982", + "revCount": 75, + "type": "tarball", + "url": "https://api.flakehub.com/f/pinned/DeterminateSystems/flake-schemas/0.1.5/0190ef2f-61e0-794b-ba14-e82f225e55e6/source.tar.gz" + }, + "original": { + "type": "tarball", + "url": "https://flakehub.com/f/DeterminateSystems/flake-schemas/%3D0.1.5.tar.gz" + } + }, "flake-utils": { "inputs": { "systems": "systems_4" @@ -230,11 +293,11 @@ "rust-overlay": "rust-overlay" }, "locked": { - "lastModified": 1739664099, - "narHash": "sha256-oILseXulxU+QsyuUxOvC3/rQoIvnVMBnpAUKI/A+bnk=", + "lastModified": 1739814478, + "narHash": "sha256-y/O5nx9yZq3IAmFIQ0HR8a91o9Q0HT6MrrmZwfQU2gI=", "ref": "refs/heads/main", - "rev": "2b7d75e0fc8b4b6760d350947bc5e476633cf751", - "revCount": 67, + "rev": "d882f4a1e850c936d58fb9794416c9ab31fb5257", + "revCount": 71, "type": "git", "url": "https://git.blahai.gay/blahai/haipkgs.git" }, @@ -271,11 +334,11 @@ ] }, "locked": { - "lastModified": 1739676861, - "narHash": "sha256-X86ptHMNVuu1Z9leL0YV2E/oxD2IgPYrYANPcvFYpNo=", + "lastModified": 1739802995, + "narHash": "sha256-kZv0upOigS/4sUEgZuZd6/uO6s8X8oYOLk9/sGMsl+c=", "owner": "nix-community", "repo": "home-manager", - "rev": "eb44c1601ed99896525e983bc9b15eb8b4d5879e", + "rev": "9d0d48f4c3d2fb1a8c8607da143bb567a741d914", "type": "github" }, "original": { @@ -360,11 +423,11 @@ "xdph": "xdph" }, "locked": { - "lastModified": 1739665242, - "narHash": "sha256-iY4DtNDebYHt0uuN0EWWeNQ8K/SYix8KeUe2tcFzW0A=", + "lastModified": 1739757807, + "narHash": "sha256-HYaYpFFCopski3zyKDp/XTARlkwCkSHvfWBoCAcbqkk=", "owner": "hyprwm", "repo": "Hyprland", - "rev": "897ee276dc0a8a6b11a8102b225a9e969faac0bf", + "rev": "59c615c321c45302491de3b1c003844c86aefca7", "type": "github" }, "original": { @@ -545,6 +608,28 @@ "type": "github" } }, + "jovian": { + "inputs": { + "nix-github-actions": "nix-github-actions", + "nixpkgs": [ + "chaotic", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1739640234, + "narHash": "sha256-+o3AWAC0GICcvdn+vXGmQ5hXJSALdD3rgnt+SZLRQKU=", + "owner": "Jovian-Experiments", + "repo": "Jovian-NixOS", + "rev": "dc10b4ba56665c66562a5e993c9734fe89c29c65", + "type": "github" + }, + "original": { + "owner": "Jovian-Experiments", + "repo": "Jovian-NixOS", + "type": "github" + } + }, "lix": { "flake": false, "locked": { @@ -580,13 +665,36 @@ "url": "https://git.lix.systems/lix-project/nixos-module/archive/2.92.0.tar.gz" } }, + "nix-github-actions": { + "inputs": { + "nixpkgs": [ + "chaotic", + "jovian", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1729697500, + "narHash": "sha256-VFTWrbzDlZyFHHb1AlKRiD/qqCJIripXKiCSFS8fAOY=", + "owner": "zhaofengli", + "repo": "nix-github-actions", + "rev": "e418aeb728b6aa5ca8c5c71974e7159c2df1d8cf", + "type": "github" + }, + "original": { + "owner": "zhaofengli", + "ref": "matrix-name", + "repo": "nix-github-actions", + "type": "github" + } + }, "nixpkgs": { "locked": { - "lastModified": 1739446958, - "narHash": "sha256-+/bYK3DbPxMIvSL4zArkMX0LQvS7rzBKXnDXLfKyRVc=", + "lastModified": 1739736696, + "narHash": "sha256-zON2GNBkzsIyALlOCFiEBcIjI4w38GYOb+P+R4S8Jsw=", "owner": "nixos", "repo": "nixpkgs", - "rev": "2ff53fe64443980e139eaa286017f53f88336dd0", + "rev": "d74a2335ac9c133d6bbec9fc98d91a77f1604c1f", "type": "github" }, "original": { @@ -622,6 +730,7 @@ "root": { "inputs": { "agenix": "agenix", + "chaotic": "chaotic", "deploy-rs": "deploy-rs", "easy-hosts": "easy-hosts", "flake-parts": "flake-parts", @@ -633,6 +742,23 @@ "treefmt-nix": "treefmt-nix" } }, + "rust-analyzer-src": { + "flake": false, + "locked": { + "lastModified": 1739512757, + "narHash": "sha256-QfmtsyySvQSEKLuB850AmyqpNQRP+T57vuZnGIpmGD4=", + "owner": "rust-lang", + "repo": "rust-analyzer", + "rev": "40e4f9130f4e44f20961a7cf4ade46325126698b", + "type": "github" + }, + "original": { + "owner": "rust-lang", + "ref": "nightly", + "repo": "rust-analyzer", + "type": "github" + } + }, "rust-overlay": { "inputs": { "nixpkgs": [ @@ -641,11 +767,11 @@ ] }, "locked": { - "lastModified": 1739586408, - "narHash": "sha256-UN9hRKRE1eLU8C0cioTZubaCZQTA8NDc8/4vCpS5pS0=", + "lastModified": 1739673031, + "narHash": "sha256-Z/GT8ebbvc4goxN4A0A5ACj26G1HaGJO+VetrPuC5Mo=", "owner": "oxalica", "repo": "rust-overlay", - "rev": "3dbc0ce1c0690b83cfb9a9a51fbe90c3bc8f9916", + "rev": "538528d55318e0c8af1c307dcf10b7629b988fc3", "type": "github" }, "original": { diff --git a/flake.nix b/flake.nix index d803356..74b6539 100644 --- a/flake.nix +++ b/flake.nix @@ -14,6 +14,7 @@ url = "git+https://git.blahai.gay/blahai/haipkgs.git"; inputs = { nixpkgs.follows = "nixpkgs"; + # Will add more follows if needed }; }; @@ -22,6 +23,14 @@ inputs.nixpkgs-lib.follows = "nixpkgs"; }; + chaotic = { + url = "github:chaotic-cx/nyx/nyxpkgs-unstable"; + inputs = { + nixpkgs.follows = "nixpkgs"; + home-manager.follows = "nixpkgs"; + }; + }; + home-manager = { url = "github:nix-community/home-manager"; inputs.nixpkgs.follows = "nixpkgs"; diff --git a/modules/nixos/boot/default.nix b/modules/nixos/boot/default.nix new file mode 100644 index 0000000..11bcd26 --- /dev/null +++ b/modules/nixos/boot/default.nix @@ -0,0 +1,5 @@ +{ + imports = [ + ./loader + ]; +} diff --git a/modules/nixos/boot/loader/default.nix b/modules/nixos/boot/loader/default.nix new file mode 100644 index 0000000..a11fbe9 --- /dev/null +++ b/modules/nixos/boot/loader/default.nix @@ -0,0 +1,21 @@ +{lib, ...}: let + inherit (lib.options) mkOption; + inherit (lib.types) enum; +in { + imports = [ + ./systemd-boot.nix + ./grub.nix + ./refind.nix + ]; + + options.olympus.system.boot.loader = mkOption { + type = enum [ + "none" + "grub" + "systemd-boot" + "refind" + ]; + default = "none"; + description = "The bootloader"; + }; +} diff --git a/modules/nixos/boot/loader/grub.nix b/modules/nixos/boot/loader/grub.nix new file mode 100644 index 0000000..784978a --- /dev/null +++ b/modules/nixos/boot/loader/grub.nix @@ -0,0 +1,31 @@ +{ + lib, + config, + ... +}: let + inherit (lib.modules) mkIf mkDefault; + inherit (lib.options) mkOption; + inherit (lib.types) nullOr str; + cfg = config.olympus.system.boot; +in { + options.olympus.system.boot.grub = { + device = mkOption { + type = nullOr str; + default = "nodev"; + description = "The device to install the bootloader to."; + }; + }; + + config = mkIf (cfg.loader == "grub") { + boot.loader.grub = { + enable = mkDefault true; + useOSProber = false; + efiSupport = false; + enableCryptodisk = mkDefault false; + inherit (cfg.grub) device; + theme = null; + backgroundColor = null; + splashImage = null; + }; + }; +} diff --git a/modules/nixos/boot/loader/refind.nix b/modules/nixos/boot/loader/refind.nix new file mode 100644 index 0000000..6974dc2 --- /dev/null +++ b/modules/nixos/boot/loader/refind.nix @@ -0,0 +1,18 @@ +{ + lib, + config, + ... +}: let + inherit (lib.modules) mkIf mkDefault; + + cfg = config.olympus.system.boot; +in { + config = mkIf (cfg.loader == "refind") { + boot.loader.refind = { + enable = mkDefault true; + maxGenerations = 5; + extraConfig = '' + ''; + }; + }; +} diff --git a/modules/nixos/boot/loader/systemd-boot.nix b/modules/nixos/boot/loader/systemd-boot.nix new file mode 100644 index 0000000..cfc89d1 --- /dev/null +++ b/modules/nixos/boot/loader/systemd-boot.nix @@ -0,0 +1,18 @@ +{ + lib, + config, + ... +}: let + inherit (lib.modules) mkIf mkDefault; + + cfg = config.olympus.system.boot; +in { + config = mkIf (cfg.loader == "systemd-boot") { + boot.loader.systemd-boot = { + enable = mkDefault true; + configurationLimit = 5; + consoleMode = "max"; + editor = false; + }; + }; +} diff --git a/modules/nixos/default.nix b/modules/nixos/default.nix index df18ec4..e6abbfe 100644 --- a/modules/nixos/default.nix +++ b/modules/nixos/default.nix @@ -1,5 +1,6 @@ { imports = [ ./remote-modules.nix + ./boot ]; } diff --git a/modules/nixos/remote-modules.nix b/modules/nixos/remote-modules.nix index 897b9ee..cb41163 100644 --- a/modules/nixos/remote-modules.nix +++ b/modules/nixos/remote-modules.nix @@ -1,5 +1,11 @@ {inputs, ...}: { imports = [ + # Fork of nix + inputs.lix-module.nixosModules.default + # My own modules like rEFInd for nixos + inputs.haipkgs.nixosModules.default + # Chaotic nyx stuff (mostly for chos kernel) + inputs.chaotic.nixosModules.default # TODO replace with hjem once possible inputs.home-manager.nixosModules.home-manager ];