diff --git a/.github/workflows/iso.yml b/.github/workflows/iso.yml index 116787a..5d6279a 100644 --- a/.github/workflows/iso.yml +++ b/.github/workflows/iso.yml @@ -17,7 +17,7 @@ jobs: - name: Build id: build run: | - nix build --log-format raw -v + nix build .#install-isoConfigurations.snowflakeos --log-format raw -v echo "::set-output name=release::$(ls result/iso | grep iso | sed "s/-/\n/g" | head -n2 | tail -n1)" echo "::set-output name=file::$(ls result/iso | grep iso | head -n1)" - name: Upload Artifacts diff --git a/.gitignore b/.gitignore index 57e0f45..742d5d0 100644 --- a/.gitignore +++ b/.gitignore @@ -2,3 +2,4 @@ /.direnv /.vscode /result +*.iso diff --git a/README.md b/README.md index 7a40a63..de84070 100644 --- a/README.md +++ b/README.md @@ -20,7 +20,7 @@ Previous builds can be found in this repositories [GitHub Actions](https://githu ## How to build 1) Clone this repository and navigate to the project directory -2) `nix build` +2) `nix build .#install-isoConfigurations.snowflakeos` 3) The resulting ISO file will be linked in `result/iso/snowflakeos-.iso` [builtwithnix badge]: https://img.shields.io/badge/Built%20With-Nix-41439A?style=for-the-badge&logo=nixos&logoColor=white diff --git a/flake.lock b/flake.lock index c12b5fc..5c4ceeb 100644 --- a/flake.lock +++ b/flake.lock @@ -3,11 +3,11 @@ "flake-compat": { "flake": false, "locked": { - "lastModified": 1668681692, - "narHash": "sha256-Ht91NGdewz8IQLtWZ9LCeNXMSXHUss+9COoqu6JLmXU=", + "lastModified": 1650374568, + "narHash": "sha256-Z+s0J8/r907g149rllvwhb4pKi8Wam5ij0st8PwAh+E=", "owner": "edolstra", "repo": "flake-compat", - "rev": "009399224d5e398d03b22badca40a37ac85412a1", + "rev": "b4a34015c698c7793d592d66adbab377907a2be8", "type": "github" }, "original": { @@ -16,64 +16,298 @@ "type": "github" } }, - "icicle": { + "flake-compat_2": { + "flake": false, + "locked": { + "lastModified": 1650374568, + "narHash": "sha256-Z+s0J8/r907g149rllvwhb4pKi8Wam5ij0st8PwAh+E=", + "owner": "edolstra", + "repo": "flake-compat", + "rev": "b4a34015c698c7793d592d66adbab377907a2be8", + "type": "github" + }, + "original": { + "owner": "edolstra", + "repo": "flake-compat", + "type": "github" + } + }, + "flake-compat_3": { + "flake": false, + "locked": { + "lastModified": 1650374568, + "narHash": "sha256-Z+s0J8/r907g149rllvwhb4pKi8Wam5ij0st8PwAh+E=", + "owner": "edolstra", + "repo": "flake-compat", + "rev": "b4a34015c698c7793d592d66adbab377907a2be8", + "type": "github" + }, + "original": { + "owner": "edolstra", + "repo": "flake-compat", + "type": "github" + } + }, + "flake-compat_4": { + "locked": { + "lastModified": 1696426674, + "narHash": "sha256-kvjfFW7WAETZlt09AgDn1MrtKzP7t90Vf7vypd3OL1U=", + "rev": "0f9255e01c2351cc7d116c072cb317785dd33b33", + "revCount": 57, + "type": "tarball", + "url": "https://api.flakehub.com/f/pinned/edolstra/flake-compat/1.0.1/018afb31-abd1-7bff-a5e4-cff7e18efb7a/source.tar.gz" + }, + "original": { + "type": "tarball", + "url": "https://flakehub.com/f/edolstra/flake-compat/1.tar.gz" + } + }, + "flake-compat_5": { + "flake": false, + "locked": { + "lastModified": 1650374568, + "narHash": "sha256-Z+s0J8/r907g149rllvwhb4pKi8Wam5ij0st8PwAh+E=", + "owner": "edolstra", + "repo": "flake-compat", + "rev": "b4a34015c698c7793d592d66adbab377907a2be8", + "type": "github" + }, + "original": { + "owner": "edolstra", + "repo": "flake-compat", + "type": "github" + } + }, + "flake-compat_6": { + "flake": false, + "locked": { + "lastModified": 1650374568, + "narHash": "sha256-Z+s0J8/r907g149rllvwhb4pKi8Wam5ij0st8PwAh+E=", + "owner": "edolstra", + "repo": "flake-compat", + "rev": "b4a34015c698c7793d592d66adbab377907a2be8", + "type": "github" + }, + "original": { + "owner": "edolstra", + "repo": "flake-compat", + "type": "github" + } + }, + "flake-utils": { "inputs": { - "nixpkgs": [ - "nixpkgs" - ], - "utils": [ - "utils" - ] + "systems": "systems" }, "locked": { - "lastModified": 1681771650, - "narHash": "sha256-6sQcZrb6PMlFTucVbmoxtd98ebQG5ECmGL5KqP2v4qA=", - "owner": "snowflakelinux", - "repo": "icicle", - "rev": "0320600bceab0946696db11c44a14bdf134e1771", + "lastModified": 1694529238, + "narHash": "sha256-zsNZZGTGnMOf9YpHKJqMSsa0dXbfmxeoJ7xHlrt+xmY=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "ff7b65b44d01cf9ba6a71320833626af21126384", "type": "github" }, "original": { - "owner": "snowflakelinux", - "repo": "icicle", + "owner": "numtide", + "repo": "flake-utils", "type": "github" } }, - "naersk": { + "flake-utils-plus": { "inputs": { - "nixpkgs": "nixpkgs" + "flake-utils": "flake-utils" }, "locked": { - "lastModified": 1671096816, - "narHash": "sha256-ezQCsNgmpUHdZANDCILm3RvtO1xH8uujk/+EqNvzIOg=", - "owner": "nix-community", - "repo": "naersk", - "rev": "d998160d6a076cfe8f9741e56aeec7e267e3e114", + "lastModified": 1696331477, + "narHash": "sha256-YkbRa/1wQWdWkVJ01JvV+75KIdM37UErqKgTf0L54Fk=", + "owner": "gytis-ivaskevicius", + "repo": "flake-utils-plus", + "rev": "bfc53579db89de750b25b0c5e7af299e0c06d7d3", "type": "github" }, "original": { - "owner": "nix-community", - "repo": "naersk", + "owner": "gytis-ivaskevicius", + "repo": "flake-utils-plus", "type": "github" } }, - "nix-data": { + "flake-utils-plus_2": { "inputs": { - "flake-compat": "flake-compat", - "flake-utils": [ - "utils" + "flake-utils": "flake-utils_2" + }, + "locked": { + "lastModified": 1696331477, + "narHash": "sha256-YkbRa/1wQWdWkVJ01JvV+75KIdM37UErqKgTf0L54Fk=", + "owner": "gytis-ivaskevicius", + "repo": "flake-utils-plus", + "rev": "bfc53579db89de750b25b0c5e7af299e0c06d7d3", + "type": "github" + }, + "original": { + "owner": "gytis-ivaskevicius", + "repo": "flake-utils-plus", + "type": "github" + } + }, + "flake-utils-plus_3": { + "inputs": { + "flake-utils": "flake-utils_3" + }, + "locked": { + "lastModified": 1696331477, + "narHash": "sha256-YkbRa/1wQWdWkVJ01JvV+75KIdM37UErqKgTf0L54Fk=", + "owner": "gytis-ivaskevicius", + "repo": "flake-utils-plus", + "rev": "bfc53579db89de750b25b0c5e7af299e0c06d7d3", + "type": "github" + }, + "original": { + "owner": "gytis-ivaskevicius", + "repo": "flake-utils-plus", + "type": "github" + } + }, + "flake-utils-plus_4": { + "inputs": { + "flake-utils": "flake-utils_4" + }, + "locked": { + "lastModified": 1696331477, + "narHash": "sha256-YkbRa/1wQWdWkVJ01JvV+75KIdM37UErqKgTf0L54Fk=", + "owner": "gytis-ivaskevicius", + "repo": "flake-utils-plus", + "rev": "bfc53579db89de750b25b0c5e7af299e0c06d7d3", + "type": "github" + }, + "original": { + "owner": "gytis-ivaskevicius", + "repo": "flake-utils-plus", + "type": "github" + } + }, + "flake-utils-plus_5": { + "inputs": { + "flake-utils": "flake-utils_5" + }, + "locked": { + "lastModified": 1696331477, + "narHash": "sha256-YkbRa/1wQWdWkVJ01JvV+75KIdM37UErqKgTf0L54Fk=", + "owner": "gytis-ivaskevicius", + "repo": "flake-utils-plus", + "rev": "bfc53579db89de750b25b0c5e7af299e0c06d7d3", + "type": "github" + }, + "original": { + "owner": "gytis-ivaskevicius", + "repo": "flake-utils-plus", + "type": "github" + } + }, + "flake-utils_2": { + "inputs": { + "systems": "systems_2" + }, + "locked": { + "lastModified": 1694529238, + "narHash": "sha256-zsNZZGTGnMOf9YpHKJqMSsa0dXbfmxeoJ7xHlrt+xmY=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "ff7b65b44d01cf9ba6a71320833626af21126384", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_3": { + "inputs": { + "systems": "systems_3" + }, + "locked": { + "lastModified": 1694529238, + "narHash": "sha256-zsNZZGTGnMOf9YpHKJqMSsa0dXbfmxeoJ7xHlrt+xmY=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "ff7b65b44d01cf9ba6a71320833626af21126384", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_4": { + "inputs": { + "systems": "systems_5" + }, + "locked": { + "lastModified": 1694529238, + "narHash": "sha256-zsNZZGTGnMOf9YpHKJqMSsa0dXbfmxeoJ7xHlrt+xmY=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "ff7b65b44d01cf9ba6a71320833626af21126384", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_5": { + "inputs": { + "systems": "systems_6" + }, + "locked": { + "lastModified": 1694529238, + "narHash": "sha256-zsNZZGTGnMOf9YpHKJqMSsa0dXbfmxeoJ7xHlrt+xmY=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "ff7b65b44d01cf9ba6a71320833626af21126384", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "icicle": { + "inputs": { + "nixpkgs": [ + "nixpkgs" ], - "naersk": "naersk", + "snowfall-lib": "snowfall-lib" + }, + "locked": { + "lastModified": 1698690282, + "narHash": "sha256-krLodOJkxdBHbWSSBy6qLPWH3jfHm0fYZC89SE2gciw=", + "owner": "snowflakelinux", + "repo": "icicle", + "rev": "fdee7177f358e374b3be454ff3363ccc650af4fd", + "type": "github" + }, + "original": { + "owner": "snowflakelinux", + "repo": "icicle", + "type": "github" + } + }, + "nix-data": { + "inputs": { "nixpkgs": [ "nixpkgs" - ] + ], + "snowfall-lib": "snowfall-lib_2" }, "locked": { - "lastModified": 1675401998, - "narHash": "sha256-yts2bkp9cn4SuYPYjgTNbOwTtpFxps3TU8zmS/ftN/Q=", + "lastModified": 1698676531, + "narHash": "sha256-kLcAtvZPa1VKHmMJR3xiX94lkkmfUFvzn/pnw6r5w4I=", "owner": "snowflakelinux", "repo": "nix-data", - "rev": "36fb938713742aa0efefa78d34825c148a844990", + "rev": "c69c03a0ce67b59c99559c5b14a123cb0122509d", "type": "github" }, "original": { @@ -85,18 +319,17 @@ "nix-software-center": { "inputs": { "nixpkgs": [ + "snowflakeos-modules", "nixpkgs" ], - "utils": [ - "utils" - ] + "utils": "utils" }, "locked": { - "lastModified": 1680477702, - "narHash": "sha256-1KUe0zlXCeBpqTDHPWBBMjkGnRLthJEpQc+82Q7Pp1w=", + "lastModified": 1693158194, + "narHash": "sha256-jDTKAmei9UgwoVHAskalRilTunWYlWOESNGY4BKscuU=", "owner": "vlinkz", "repo": "nix-software-center", - "rev": "8c66618ebb85263e58c4b1b5e46bc954d55a418b", + "rev": "8faa762f9b710520f8b7f81f4892a6e0aba749dc", "type": "github" }, "original": { @@ -105,31 +338,76 @@ "type": "github" } }, - "nixpkgs": { + "nixlib": { "locked": { - "lastModified": 1671200928, - "narHash": "sha256-mZfzDyzojwj6I0wyooIjGIn81WtGVnx6+avU5Wv+VKU=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "757b82211463dd5ba1475b6851d3731dfe14d377", + "lastModified": 1693701915, + "narHash": "sha256-waHPLdDYUOHSEtMKKabcKIMhlUOHPOOPQ9UyFeEoovs=", + "owner": "nix-community", + "repo": "nixpkgs.lib", + "rev": "f5af57d3ef9947a70ac86e42695231ac1ad00c25", + "type": "github" + }, + "original": { + "owner": "nix-community", + "repo": "nixpkgs.lib", + "type": "github" + } + }, + "nixos-conf-editor": { + "inputs": { + "flake-compat": "flake-compat_4", + "nixpkgs": [ + "snowflakeos-modules", + "nixpkgs" + ], + "snowfall-lib": "snowfall-lib_4" + }, + "locked": { + "lastModified": 1698685411, + "narHash": "sha256-N93S17LLkckv25qB/aMdFyfV+sNvhiGyHfFVMczoBs8=", + "owner": "vlinkz", + "repo": "nixos-conf-editor", + "rev": "f79009587708571f79b3299898723c131473e2b4", + "type": "github" + }, + "original": { + "owner": "vlinkz", + "repo": "nixos-conf-editor", + "type": "github" + } + }, + "nixos-generators": { + "inputs": { + "nixlib": "nixlib", + "nixpkgs": [ + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1696058303, + "narHash": "sha256-eNqKWpF5zG0SrgbbtljFOrRgFgRzCc4++TMFADBMLnc=", + "owner": "nix-community", + "repo": "nixos-generators", + "rev": "150f38bd1e09e20987feacb1b0d5991357532fb5", "type": "github" }, "original": { - "id": "nixpkgs", - "type": "indirect" + "owner": "nix-community", + "repo": "nixos-generators", + "type": "github" } }, - "nixpkgs_2": { + "nixpkgs": { "locked": { - "lastModified": 1681737997, - "narHash": "sha256-pHhjgsIkRMu80LmVe8QoKIZB6VZGRRxFmIvsC5S89k4=", - "owner": "NixOS", + "lastModified": 1699099776, + "narHash": "sha256-X09iKJ27mGsGambGfkKzqvw5esP1L/Rf8H3u3fCqIiU=", + "owner": "nixos", "repo": "nixpkgs", - "rev": "f00994e78cd39e6fc966f0c4103f908e63284780", + "rev": "85f1ba3e51676fa8cc604a3d863d729026a6b8eb", "type": "github" }, "original": { - "owner": "NixOS", + "owner": "nixos", "ref": "nixos-unstable", "repo": "nixpkgs", "type": "github" @@ -139,26 +417,26 @@ "inputs": { "icicle": "icicle", "nix-data": "nix-data", - "nix-software-center": "nix-software-center", - "nixpkgs": "nixpkgs_2", - "snow": "snow", - "snowflake": "snowflake", - "utils": "utils_2" + "nixos-generators": "nixos-generators", + "nixpkgs": "nixpkgs", + "snowfall-lib": "snowfall-lib_3", + "snowflakeos-modules": "snowflakeos-modules" } }, "snow": { "inputs": { "nixpkgs": [ + "snowflakeos-modules", "nixpkgs" ], - "utils": "utils" + "utils": "utils_2" }, "locked": { - "lastModified": 1676244040, - "narHash": "sha256-tOncW45ZOpsWnCc5DzCKrmAWAjKW3Sj5OFlVuWbBxsg=", + "lastModified": 1689348644, + "narHash": "sha256-BtO1oo0D3bIRFtEIwaqKGAOpMIcoDDb8fr0fx+BHphQ=", "owner": "snowflakelinux", "repo": "snow", - "rev": "6be11b1dd0ed56af9785b920353e9474a111a732", + "rev": "67a53698eba1fe0f8821f8786d3c6d3086ba1e57", "type": "github" }, "original": { @@ -167,23 +445,165 @@ "type": "github" } }, - "snowflake": { + "snowfall-lib": { + "inputs": { + "flake-compat": "flake-compat", + "flake-utils-plus": "flake-utils-plus", + "nixpkgs": [ + "icicle", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1696432959, + "narHash": "sha256-oJQZv2MYyJaVyVJY5IeevzqpGvMGKu5pZcCCJvb+xjc=", + "owner": "snowfallorg", + "repo": "lib", + "rev": "92803a029b5314d4436a8d9311d8707b71d9f0b6", + "type": "github" + }, + "original": { + "owner": "snowfallorg", + "repo": "lib", + "type": "github" + } + }, + "snowfall-lib_2": { "inputs": { + "flake-compat": "flake-compat_2", + "flake-utils-plus": "flake-utils-plus_2", "nixpkgs": [ + "nix-data", "nixpkgs" ] }, "locked": { - "lastModified": 1674669719, - "narHash": "sha256-x3sFlFuWjHynInxXe4OTyes6dRYvmEAmp3viyzfCPQg=", + "lastModified": 1696432959, + "narHash": "sha256-oJQZv2MYyJaVyVJY5IeevzqpGvMGKu5pZcCCJvb+xjc=", + "owner": "snowfallorg", + "repo": "lib", + "rev": "92803a029b5314d4436a8d9311d8707b71d9f0b6", + "type": "github" + }, + "original": { + "owner": "snowfallorg", + "repo": "lib", + "type": "github" + } + }, + "snowfall-lib_3": { + "inputs": { + "flake-compat": "flake-compat_3", + "flake-utils-plus": "flake-utils-plus_3", + "nixpkgs": [ + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1696432959, + "narHash": "sha256-oJQZv2MYyJaVyVJY5IeevzqpGvMGKu5pZcCCJvb+xjc=", + "owner": "snowfallorg", + "repo": "lib", + "rev": "92803a029b5314d4436a8d9311d8707b71d9f0b6", + "type": "github" + }, + "original": { + "owner": "snowfallorg", + "repo": "lib", + "type": "github" + } + }, + "snowfall-lib_4": { + "inputs": { + "flake-compat": "flake-compat_5", + "flake-utils-plus": "flake-utils-plus_4", + "nixpkgs": [ + "snowflakeos-modules", + "nixos-conf-editor", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1696432959, + "narHash": "sha256-oJQZv2MYyJaVyVJY5IeevzqpGvMGKu5pZcCCJvb+xjc=", + "owner": "snowfallorg", + "repo": "lib", + "rev": "92803a029b5314d4436a8d9311d8707b71d9f0b6", + "type": "github" + }, + "original": { + "owner": "snowfallorg", + "repo": "lib", + "type": "github" + } + }, + "snowfall-lib_5": { + "inputs": { + "flake-compat": "flake-compat_6", + "flake-utils-plus": "flake-utils-plus_5", + "nixpkgs": [ + "snowflakeos-modules", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1696432959, + "narHash": "sha256-oJQZv2MYyJaVyVJY5IeevzqpGvMGKu5pZcCCJvb+xjc=", + "owner": "snowfallorg", + "repo": "lib", + "rev": "92803a029b5314d4436a8d9311d8707b71d9f0b6", + "type": "github" + }, + "original": { + "owner": "snowfallorg", + "repo": "lib", + "type": "github" + } + }, + "snowflakeos-module-manager": { + "inputs": { + "nixpkgs": [ + "snowflakeos-modules", + "nixpkgs" + ], + "utils": "utils_3" + }, + "locked": { + "lastModified": 1695940028, + "narHash": "sha256-vsrX7uApokekSNIw1PLAOA/sFobBoLbXMoI/yp+coZo=", + "owner": "snowflakelinux", + "repo": "snowflakeos-module-manager", + "rev": "68970b1a6c8cb25015636d91a48baefa8e5c4d48", + "type": "github" + }, + "original": { + "owner": "snowflakelinux", + "repo": "snowflakeos-module-manager", + "type": "github" + } + }, + "snowflakeos-modules": { + "inputs": { + "nix-software-center": "nix-software-center", + "nixos-conf-editor": "nixos-conf-editor", + "nixpkgs": [ + "nixpkgs" + ], + "snow": "snow", + "snowfall-lib": "snowfall-lib_5", + "snowflakeos-module-manager": "snowflakeos-module-manager" + }, + "locked": { + "lastModified": 1698689516, + "narHash": "sha256-fc+3Xfe7j8YuSYVHkIqAdMoEYDZty0ZRdkKNOaiJcfY=", "owner": "snowflakelinux", - "repo": "snowflake-modules", - "rev": "239baddf62d28711a4900983305d9ba19b7f5c05", + "repo": "snowflakeos-modules", + "rev": "d0ed77a90387730732d54cb67a92c3b020f7e2e0", "type": "github" }, "original": { "owner": "snowflakelinux", - "repo": "snowflake-modules", + "repo": "snowflakeos-modules", "type": "github" } }, @@ -202,7 +622,115 @@ "type": "github" } }, + "systems_2": { + "locked": { + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "type": "github" + }, + "original": { + "owner": "nix-systems", + "repo": "default", + "type": "github" + } + }, + "systems_3": { + "locked": { + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "type": "github" + }, + "original": { + "owner": "nix-systems", + "repo": "default", + "type": "github" + } + }, + "systems_4": { + "locked": { + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "type": "github" + }, + "original": { + "owner": "nix-systems", + "repo": "default", + "type": "github" + } + }, + "systems_5": { + "locked": { + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "type": "github" + }, + "original": { + "owner": "nix-systems", + "repo": "default", + "type": "github" + } + }, + "systems_6": { + "locked": { + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "type": "github" + }, + "original": { + "owner": "nix-systems", + "repo": "default", + "type": "github" + } + }, + "systems_7": { + "locked": { + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "type": "github" + }, + "original": { + "owner": "nix-systems", + "repo": "default", + "type": "github" + } + }, "utils": { + "inputs": { + "systems": "systems_4" + }, + "locked": { + "lastModified": 1689068808, + "narHash": "sha256-6ixXo3wt24N/melDWjq70UuHQLxGV8jZvooRanIHXw0=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "919d646de7be200f3bf08cb76ae1f09402b6f9b4", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "utils_2": { "locked": { "lastModified": 1667395993, "narHash": "sha256-nuEHfE/LcWyuSWnS8t12N1wc105Qtau+/OdUAjtQ0rA=", @@ -217,16 +745,16 @@ "type": "github" } }, - "utils_2": { + "utils_3": { "inputs": { - "systems": "systems" + "systems": "systems_7" }, "locked": { - "lastModified": 1681202837, - "narHash": "sha256-H+Rh19JDwRtpVPAWp64F+rlEtxUWBAQW28eAi3SRSzg=", + "lastModified": 1689068808, + "narHash": "sha256-6ixXo3wt24N/melDWjq70UuHQLxGV8jZvooRanIHXw0=", "owner": "numtide", "repo": "flake-utils", - "rev": "cfacdce06f30d2b68473a46042957675eebb3401", + "rev": "919d646de7be200f3bf08cb76ae1f09402b6f9b4", "type": "github" }, "original": { diff --git a/flake.nix b/flake.nix index 3ecaf01..c56e8f4 100644 --- a/flake.nix +++ b/flake.nix @@ -1,56 +1,45 @@ { inputs = { - nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable"; - snowflake = { - url = "github:snowflakelinux/snowflake-modules"; + nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable"; + snowfall-lib = { + url = "github:snowfallorg/lib"; + inputs.nixpkgs.follows = "nixpkgs"; + }; + snowflakeos-modules = { + url = "github:snowflakelinux/snowflakeos-modules"; inputs.nixpkgs.follows = "nixpkgs"; }; icicle = { url = "github:snowflakelinux/icicle"; - inputs = { - nixpkgs.follows = "nixpkgs"; - utils.follows = "utils"; - }; + inputs.nixpkgs.follows = "nixpkgs"; }; nix-data = { url = "github:snowflakelinux/nix-data"; - inputs = { - flake-utils.follows = "utils"; - nixpkgs.follows = "nixpkgs"; - }; - }; - nix-software-center = { - url = "github:vlinkz/nix-software-center"; - inputs = { - nixpkgs.follows = "nixpkgs"; - utils.follows = "utils"; - }; + inputs.nixpkgs.follows = "nixpkgs"; }; - snow = { - url = "github:snowflakelinux/snow"; - inputs = { - flake-utils.follows = "utils"; - nixpkgs.follows = "nixpkgs"; - }; + nixos-generators = { + url = "github:nix-community/nixos-generators"; + inputs.nixpkgs.follows = "nixpkgs"; }; - utils.url = "github:numtide/flake-utils"; }; - outputs = { self, nixpkgs, utils, ... }@inputs: - utils.lib.eachDefaultSystem (system: - rec { - iso = nixpkgs.lib.nixosSystem { - inherit system; - modules = [ - "${nixpkgs}/nixos/modules/installer/cd-dvd/installation-cd-graphical-base.nix" - ./base.nix - ./graphical.nix - ./iso-image.nix - inputs.snowflake.nixosModules.snowflake - inputs.nix-data.nixosModules.${system}.nix-data - ]; - specialArgs = { inherit inputs; inherit system; }; - }; - defaultPackage = iso.config.system.build.isoImage; - }); + outputs = inputs: + inputs.snowfall-lib.mkFlake rec { + inherit inputs; + channels-config.allowUnfree = true; + + systems.modules.nixos = with inputs; [ + nix-data.nixosModules.nix-data + icicle.nixosModules.icicle + snowflakeos-modules.nixosModules.gnome + snowflakeos-modules.nixosModules.kernel + snowflakeos-modules.nixosModules.networking + snowflakeos-modules.nixosModules.pipewire + snowflakeos-modules.nixosModules.printing + snowflakeos-modules.nixosModules.snowflakeos + snowflakeos-modules.nixosModules.metadata + ]; + + src = ./.; + }; } diff --git a/iso-image.nix b/iso-image.nix deleted file mode 100644 index 30d4dfc..0000000 --- a/iso-image.nix +++ /dev/null @@ -1,458 +0,0 @@ -{ pkgs, lib, config, ... }: - -with lib; - -let - - osfullname = "SnowflakeOS"; - osname = "snowflakeos"; - - grubPkgs = if config.boot.loader.grub.forcei686 then pkgs.pkgsi686Linux else pkgs; - # Name used by UEFI for architectures. - targetArch = - if pkgs.stdenv.isi686 || config.boot.loader.grub.forcei686 then - "ia32" - else if pkgs.stdenv.isx86_64 then - "x64" - else if pkgs.stdenv.isAarch32 then - "arm" - else if pkgs.stdenv.isAarch64 then - "aa64" - else - throw "Unsupported architecture"; - refindBinary = if targetArch == "x64" || targetArch == "aa64" then "refind_${targetArch}.efi" else null; - # Setup instructions for rEFInd. - refind = - if refindBinary != null then - '' - # Adds rEFInd to the ISO. - cp -v ${pkgs.refind}/share/refind/${refindBinary} $out/EFI/boot/ - '' - else - "# No refind for ${targetArch}" - ; - grubMenuCfg = '' - # - # Menu configuration - # - - # Search using a "marker file" - search --set=root --file /EFI/nixos-installer-image - - insmod gfxterm - insmod png - set gfxpayload=keep - set gfxmode=${concatStringsSep "," [ - #"3840x2160" - #"2560x1440" - "1920x1080" - "1366x768" - "1280x720" - "1024x768" - "800x600" - "auto" - ]} - - # Fonts can be loaded? - # (This font is assumed to always be provided as a fallback by NixOS) - if loadfont (\$root)/EFI/boot/unicode.pf2; then - set with_fonts=true - fi - if [ "\$textmode" != "true" -a "\$with_fonts" == "true" ]; then - # Use graphical term, it can be either with background image or a theme. - # input is "console", while output is "gfxterm". - # This enables "serial" input and output only when possible. - # Otherwise the failure mode is to not even enable gfxterm. - if test "\$with_serial" == "yes"; then - terminal_output gfxterm serial - terminal_input console serial - else - terminal_output gfxterm - terminal_input console - fi - else - # Sets colors for the non-graphical term. - set menu_color_normal=cyan/blue - set menu_color_highlight=white/blue - fi - - ${ # When there is a theme configured, use it, otherwise use the background image. - if config.isoImage.grubTheme != null then '' - # Sets theme. - set theme=(\$root)/EFI/boot/grub-theme/theme.txt - # Load theme fonts - $(find ${config.isoImage.grubTheme} -iname '*.pf2' -printf "loadfont (\$root)/EFI/boot/grub-theme/%P\n") - '' else '' - if background_image (\$root)/EFI/boot/efi-background.png; then - # Black background means transparent background when there - # is a background image set... This seems undocumented :( - set color_normal=black/black - set color_highlight=white/blue - else - # Falls back again to proper colors. - set menu_color_normal=cyan/blue - set menu_color_highlight=white/blue - fi - ''} - ''; - - - menuBuilderGrub2 = - defaults: options: concatStrings - ( - map - (option: '' - menuentry '${defaults.name} ${ - # Name appended to menuentry defaults to params if no specific name given. - option.name or (if option ? params then "(${option.params})" else "") - }' ${if option ? class then " --class ${option.class}" else ""} { - linux ${defaults.image} \''${isoboot} ${defaults.params} ${ - option.params or "" - } - initrd ${defaults.initrd} - } - '') - options - ) - ; - - buildMenuGrub2 = config: - buildMenuAdditionalParamsGrub2 config "" - ; - - buildMenuAdditionalParamsGrub2 = config: additional: - let - finalCfg = { - name = "${osfullname} ${config.system.nixos.label}${config.isoImage.appendToMenuLabel}"; - params = "init=${config.system.build.toplevel}/init ${additional} ${toString config.boot.kernelParams}"; - image = "/boot/${config.system.boot.loader.kernelFile}"; - initrd = "/boot/initrd"; - }; - in - menuBuilderGrub2 - finalCfg - [ - { class = "installer"; } - { class = "nomodeset"; params = "nomodeset"; } - { class = "copytoram"; params = "copytoram"; } - { class = "debug"; params = "debug"; } - ] - ; - - max = x: y: if x > y then x else y; - - syslinuxTimeout = - if config.boot.loader.timeout == null then - 0 - else - max (config.boot.loader.timeout * 10) 1; - - baseIsolinuxCfg = '' - SERIAL 0 115200 - TIMEOUT ${builtins.toString syslinuxTimeout} - UI vesamenu.c32 - MENU BACKGROUND /isolinux/background.png - - ${config.isoImage.syslinuxTheme} - - DEFAULT boot - - LABEL boot - MENU LABEL ${osfullname} ${config.system.nixos.label}${config.isoImage.appendToMenuLabel} - LINUX /boot/${config.system.boot.loader.kernelFile} - APPEND init=${config.system.build.toplevel}/init ${toString config.boot.kernelParams} - INITRD /boot/${config.system.boot.loader.initrdFile} - - # A variant to boot with 'nomodeset' - LABEL boot-nomodeset - MENU LABEL ${osfullname} ${config.system.nixos.label}${config.isoImage.appendToMenuLabel} (nomodeset) - LINUX /boot/${config.system.boot.loader.kernelFile} - APPEND init=${config.system.build.toplevel}/init ${toString config.boot.kernelParams} nomodeset - INITRD /boot/${config.system.boot.loader.initrdFile} - - # A variant to boot with 'copytoram' - LABEL boot-copytoram - MENU LABEL ${osfullname} ${config.system.nixos.label}${config.isoImage.appendToMenuLabel} (copytoram) - LINUX /boot/${config.system.boot.loader.kernelFile} - APPEND init=${config.system.build.toplevel}/init ${toString config.boot.kernelParams} copytoram - INITRD /boot/${config.system.boot.loader.initrdFile} - - # A variant to boot with verbose logging to the console - LABEL boot-debug - MENU LABEL ${osfullname} ${config.system.nixos.label}${config.isoImage.appendToMenuLabel} (debug) - LINUX /boot/${config.system.boot.loader.kernelFile} - APPEND init=${config.system.build.toplevel}/init ${toString config.boot.kernelParams} loglevel=7 - INITRD /boot/${config.system.boot.loader.initrdFile} - - # A variant to boot with a serial console enabled - LABEL boot-serial - MENU LABEL ${osfullname} ${config.system.nixos.label}${config.isoImage.appendToMenuLabel} (serial console=ttyS0,115200n8) - LINUX /boot/${config.system.boot.loader.kernelFile} - APPEND init=${config.system.build.toplevel}/init ${toString config.boot.kernelParams} console=ttyS0,115200n8 - INITRD /boot/${config.system.boot.loader.initrdFile} - ''; - - isolinuxMemtest86Entry = '' - LABEL memtest - MENU LABEL Memtest86+ - LINUX /boot/memtest.bin - APPEND ${toString config.boot.loader.grub.memtest86.params} - ''; - - isolinuxCfg = concatStringsSep "\n" - ([ baseIsolinuxCfg ] ++ optional config.boot.loader.grub.memtest86.enable isolinuxMemtest86Entry); - - - efiDir = pkgs.runCommand "efi-directory" - { - nativeBuildInputs = [ pkgs.buildPackages.grub2_efi ]; - strictDeps = true; - } '' - mkdir -p $out/EFI/boot/ - - # Add a marker so GRUB can find the filesystem. - touch $out/EFI/nixos-installer-image - - # ALWAYS required modules. - MODULES="fat iso9660 part_gpt part_msdos \ - normal boot linux configfile loopback chain halt \ - efifwsetup efi_gop \ - ls search search_label search_fs_uuid search_fs_file \ - gfxmenu gfxterm gfxterm_background gfxterm_menu test all_video loadenv \ - exfat ext2 ntfs btrfs hfsplus udf \ - videoinfo png \ - echo serial \ - " - - echo "Building GRUB with modules:" - for mod in $MODULES; do - echo " - $mod" - done - - # Modules that may or may not be available per-platform. - echo "Adding additional modules:" - for mod in efi_uga; do - if [ -f ${grubPkgs.grub2_efi}/lib/grub/${grubPkgs.grub2_efi.grubTarget}/$mod.mod ]; then - echo " - $mod" - MODULES+=" $mod" - fi - done - - # Make our own efi program, we can't rely on "grub-install" since it seems to - # probe for devices, even with --skip-fs-probe. - grub-mkimage --directory=${grubPkgs.grub2_efi}/lib/grub/${grubPkgs.grub2_efi.grubTarget} -o $out/EFI/boot/boot${targetArch}.efi -p /EFI/boot -O ${grubPkgs.grub2_efi.grubTarget} \ - $MODULES - cp ${grubPkgs.grub2_efi}/share/grub/unicode.pf2 $out/EFI/boot/ - - cat < $out/EFI/boot/grub.cfg - - set with_fonts=false - set textmode=false - # If you want to use serial for "terminal_*" commands, you need to set one up: - # Example manual configuration: - # → serial --unit=0 --speed=115200 --word=8 --parity=no --stop=1 - # This uses the defaults, and makes the serial terminal available. - set with_serial=no - if serial; then set with_serial=yes ;fi - export with_serial - clear - set timeout=10 - - # This message will only be viewable when "gfxterm" is not used. - echo "" - echo "Loading graphical boot menu..." - echo "" - echo "Press 't' to use the text boot menu on this console..." - echo "" - - ${grubMenuCfg} - - hiddenentry 'Text mode' --hotkey 't' { - loadfont (\$root)/EFI/boot/unicode.pf2 - set textmode=true - terminal_output gfxterm console - } - hiddenentry 'GUI mode' --hotkey 'g' { - $(find ${config.isoImage.grubTheme} -iname '*.pf2' -printf "loadfont (\$root)/EFI/boot/grub-theme/%P\n") - set textmode=false - terminal_output gfxterm - } - - - # If the parameter iso_path is set, append the findiso parameter to the kernel - # line. We need this to allow the nixos iso to be booted from grub directly. - if [ \''${iso_path} ] ; then - set isoboot="findiso=\''${iso_path}" - fi - - # - # Menu entries - # - - ${buildMenuGrub2 config} - submenu "HiDPI, Quirks and Accessibility" --class hidpi --class submenu { - ${grubMenuCfg} - submenu "Suggests resolution @720p" --class hidpi-720p { - ${grubMenuCfg} - ${buildMenuAdditionalParamsGrub2 config "video=1280x720@60"} - } - submenu "Suggests resolution @1080p" --class hidpi-1080p { - ${grubMenuCfg} - ${buildMenuAdditionalParamsGrub2 config "video=1920x1080@60"} - } - - # If we boot into a graphical environment where X is autoran - # and always crashes, it makes the media unusable. Allow the user - # to disable this. - submenu "Disable display-manager" --class quirk-disable-displaymanager { - ${grubMenuCfg} - ${buildMenuAdditionalParamsGrub2 config "systemd.mask=display-manager.service"} - } - - # Some laptop and convertibles have the panel installed in an - # inconvenient way, rotated away from the keyboard. - # Those entries makes it easier to use the installer. - submenu "" {return} - submenu "Rotate framebuffer Clockwise" --class rotate-90cw { - ${grubMenuCfg} - ${buildMenuAdditionalParamsGrub2 config "fbcon=rotate:1"} - } - submenu "Rotate framebuffer Upside-Down" --class rotate-180 { - ${grubMenuCfg} - ${buildMenuAdditionalParamsGrub2 config "fbcon=rotate:2"} - } - submenu "Rotate framebuffer Counter-Clockwise" --class rotate-90ccw { - ${grubMenuCfg} - ${buildMenuAdditionalParamsGrub2 config "fbcon=rotate:3"} - } - - # As a proof of concept, mainly. (Not sure it has accessibility merits.) - submenu "" {return} - submenu "Use black on white" --class accessibility-blakconwhite { - ${grubMenuCfg} - ${buildMenuAdditionalParamsGrub2 config "vt.default_red=0xFF,0xBC,0x4F,0xB4,0x56,0xBC,0x4F,0x00,0xA1,0xCF,0x84,0xCA,0x8D,0xB4,0x84,0x68 vt.default_grn=0xFF,0x55,0xBA,0xBA,0x4D,0x4D,0xB3,0x00,0xA0,0x8F,0xB3,0xCA,0x88,0x93,0xA4,0x68 vt.default_blu=0xFF,0x58,0x5F,0x58,0xC5,0xBD,0xC5,0x00,0xA8,0xBB,0xAB,0x97,0xBD,0xC7,0xC5,0x68"} - } - - # Serial access is a must! - submenu "" {return} - submenu "Serial console=ttyS0,115200n8" --class serial { - ${grubMenuCfg} - ${buildMenuAdditionalParamsGrub2 config "console=ttyS0,115200n8"} - } - } - - ${optionalString (refindBinary != null) '' - # GRUB apparently cannot do "chainloader" operations on "CD". - if [ "\$root" != "cd0" ]; then - menuentry 'rEFInd' --class refind { - # Force root to be the FAT partition - # Otherwise it breaks rEFInd's boot - search --set=root --no-floppy --fs-uuid 1234-5678 - chainloader (\$root)/EFI/boot/${refindBinary} - } - fi - ''} - menuentry 'Firmware Setup' --class settings { - fwsetup - clear - echo "" - echo "If you see this message, your EFI system doesn't support this feature." - echo "" - } - menuentry 'Shutdown' --class shutdown { - halt - } - EOF - - ${refind} - ''; - - efiImg = pkgs.runCommand "efi-image_eltorito" - { - nativeBuildInputs = [ pkgs.buildPackages.mtools pkgs.buildPackages.libfaketime pkgs.buildPackages.dosfstools ]; - strictDeps = true; - } - # Be careful about determinism: du --apparent-size, - # dates (cp -p, touch, mcopy -m, faketime for label), IDs (mkfs.vfat -i) - '' - mkdir ./contents && cd ./contents - mkdir -p ./EFI/boot - cp -rp "${efiDir}"/EFI/boot/{grub.cfg,*.efi} ./EFI/boot - - # Rewrite dates for everything in the FS - find . -exec touch --date=2000-01-01 {} + - - # Round up to the nearest multiple of 1MB, for more deterministic du output - usage_size=$(( $(du -s --block-size=1M --apparent-size . | tr -cd '[:digit:]') * 1024 * 1024 )) - # Make the image 110% as big as the files need to make up for FAT overhead - image_size=$(( ($usage_size * 110) / 100 )) - # Make the image fit blocks of 1M - block_size=$((1024*1024)) - image_size=$(( ($image_size / $block_size + 1) * $block_size )) - echo "Usage size: $usage_size" - echo "Image size: $image_size" - truncate --size=$image_size "$out" - faketime "2000-01-01 00:00:00" mkfs.vfat -i 12345678 -n EFIBOOT "$out" - - # Force a fixed order in mcopy for better determinism, and avoid file globbing - for d in $(find EFI -type d | sort); do - faketime "2000-01-01 00:00:00" mmd -i "$out" "::/$d" - done - - for f in $(find EFI -type f | sort); do - mcopy -pvm -i "$out" "$f" "::/$f" - done - - # Verify the FAT partition. - fsck.vfat -vn "$out" - ''; # */ -in -{ - snowflakeos.osInfo.enable = true; - isoImage.isoBaseName = "${osname}"; - isoImage.volumeID = "${osname}${optionalString (config.isoImage.edition != "") "-${config.isoImage.edition}"}-${config.system.nixos.release}-${pkgs.stdenv.hostPlatform.uname.processor}"; - isoImage.syslinuxTheme = '' - MENU TITLE ${osfullname} - MENU RESOLUTION 800 600 - MENU CLEAR - MENU ROWS 6 - MENU CMDLINEROW -4 - MENU TIMEOUTROW -3 - MENU TABMSGROW -2 - MENU HELPMSGROW -1 - MENU HELPMSGENDROW -1 - MENU MARGIN 0 - - # FG:AARRGGBB BG:AARRGGBB shadow - MENU COLOR BORDER 30;44 #00000000 #00000000 none - MENU COLOR SCREEN 37;40 #FF000000 #00E2E8FF none - MENU COLOR TABMSG 31;40 #80000000 #00000000 none - MENU COLOR TIMEOUT 1;37;40 #FF000000 #00000000 none - MENU COLOR TIMEOUT_MSG 37;40 #FF000000 #00000000 none - MENU COLOR CMDMARK 1;36;40 #FF000000 #00000000 none - MENU COLOR CMDLINE 37;40 #FF000000 #00000000 none - MENU COLOR TITLE 1;36;44 #00000000 #00000000 none - MENU COLOR UNSEL 37;44 #FF000000 #00000000 none - MENU COLOR SEL 7;37;40 #FFFFFFFF #FF5277C3 std - ''; - isoImage.contents = - ([ ] ++ optionals pkgs.stdenv.hostPlatform.isx86 [ - { - source = pkgs.substituteAll { - name = "isolinux.cfg"; - src = pkgs.writeText "isolinux.cfg-in" isolinuxCfg; - bootRoot = "/boot"; - }; - target = "/isolinux/isolinux.cfg"; - } - ] ++ optionals config.isoImage.makeEfiBootable [ - { - source = efiImg; - target = "/boot/efi.img"; - } - { - source = "${efiDir}/EFI"; - target = "/EFI"; - } - ]); -} diff --git a/base.nix b/modules/nixos/installation/base.nix similarity index 50% rename from base.nix rename to modules/nixos/installation/base.nix index 6d90ca2..8c6ec76 100644 --- a/base.nix +++ b/modules/nixos/installation/base.nix @@ -1,15 +1,36 @@ { pkgs, config, lib, inputs, system, ... }: { - boot.kernelPackages = config.boot.zfs.package.latestCompatibleLinuxPackages; - environment.sessionVariables.NIXPKGS_ALLOW_UNFREE = "1"; + # Whitelist wheel users to do anything + # This is useful for things like pkexec + # + # WARNING: this is dangerous for systems + # outside the installation-cd and shouldn't + # be used anywhere else. + security.polkit.extraConfig = '' + polkit.addRule(function(action, subject) { + if (subject.isInGroup("wheel")) { + return polkit.Result.YES; + } + }); + ''; + + boot.kernelPackages = lib.mkForce config.boot.zfs.package.latestCompatibleLinuxPackages; + environment.systemPackages = with pkgs; [ + git glibcLocales + glxinfo + gparted + nano + rsync + vim ]; + i18n.supportedLocales = [ "all" ]; + networking.hostName = "snowflakeos"; - nix.extraOptions = '' - experimental-features = nix-command flakes - ''; + networking.wireless.enable = false; + users.users = { snowflake = { isNormalUser = true; @@ -24,15 +45,5 @@ group = "nixos"; }; }; - - # Enable sound with pipewire. - sound.enable = true; - hardware.pulseaudio.enable = lib.mkForce false; - security.rtkit.enable = true; - services.pipewire = { - enable = true; - alsa.enable = true; - alsa.support32Bit = true; - pulse.enable = true; - }; + users.groups.nixos = {}; } diff --git a/modules/nixos/installation/default.nix b/modules/nixos/installation/default.nix new file mode 100644 index 0000000..cc532d2 --- /dev/null +++ b/modules/nixos/installation/default.nix @@ -0,0 +1,7 @@ +{ pkgs, config, lib, inputs, system, ... }: +{ + imports = [ + ./base.nix + ./graphical.nix + ]; +} diff --git a/graphical.nix b/modules/nixos/installation/graphical.nix similarity index 64% rename from graphical.nix rename to modules/nixos/installation/graphical.nix index 868611d..001ab48 100644 --- a/graphical.nix +++ b/modules/nixos/installation/graphical.nix @@ -3,20 +3,13 @@ let icicle-autostart = pkgs.makeAutostartItem { name = "org.snowflakeos.Icicle"; package = inputs.icicle.packages.${system}.icicle; }; in { - environment.systemPackages = with pkgs; [ - inputs.nix-software-center.packages.${system}.nix-software-center - inputs.icicle.packages.${system}.icicle - inputs.snow.packages.${system}.snow - icicle-autostart - ]; - - snowflakeos.gnome.enable = true; + icicle.enable = true; services.xserver.desktopManager.gnome = { # Add Firefox and other tools useful for installation to the launcher favoriteAppsOverride = '' [org.gnome.shell] - favorite-apps=[ 'firefox.desktop', 'org.gnome.Console.desktop', 'org.gnome.Nautilus.desktop', 'dev.vlinkz.NixSoftwareCenter.desktop', 'gparted.desktop', 'org.snowflakeos.Icicle.desktop' ] + favorite-apps=[ 'org.gnome.Epiphany.desktop', 'org.gnome.Console.desktop', 'org.gnome.Nautilus.desktop', 'dev.vlinkz.NixSoftwareCenter.desktop', 'gparted.desktop', 'org.snowflakeos.Icicle.desktop' ] ''; # Override GNOME defaults to disable GNOME tour and disable suspend @@ -50,6 +43,19 @@ in }; }; + # VM guest additions to improve host-guest interaction + services.spice-vdagentd.enable = true; + services.qemuGuest.enable = true; + virtualisation.vmware.guest.enable = pkgs.stdenv.hostPlatform.isx86; + virtualisation.hypervGuest.enable = true; + services.xe-guest-utilities.enable = pkgs.stdenv.hostPlatform.isx86; + # The VirtualBox guest additions rely on an out-of-tree kernel module + # which lags behind kernel releases, potentially causing broken builds. + virtualisation.virtualbox.guest.enable = false; + + # Enable plymouth + boot.plymouth.enable = true; + programs.nix-data = { enable = true; systemconfig = null; diff --git a/systems/x86_64-install-iso/snowflakeos/default.nix b/systems/x86_64-install-iso/snowflakeos/default.nix new file mode 100644 index 0000000..244d1b7 --- /dev/null +++ b/systems/x86_64-install-iso/snowflakeos/default.nix @@ -0,0 +1,6 @@ +{ inputs, system, pkgs, config, lib, snowflake, ... }: + +{ + modules.snowflakeos.snowflakeosModuleManager.enable = false; + modules.snowflakeos.nixosConfEditor.enable = false; +}