commit 3615a7b3079ea4e1875b3565f6bb0db4a4c11957 Author: elwrcl Date: Mon Mar 30 23:51:17 2026 +0300 add: home-manager,hyprland,kitten and other extras diff --git a/flake.lock b/flake.lock new file mode 100644 index 0000000..9b0e2c4 --- /dev/null +++ b/flake.lock @@ -0,0 +1,443 @@ +{ + "nodes": { + "apple-fonts": { + "inputs": { + "nixpkgs": [ + "nixpkgs" + ], + "ny": "ny", + "sf-arabic": "sf-arabic", + "sf-armenian": "sf-armenian", + "sf-compact": "sf-compact", + "sf-georgian": "sf-georgian", + "sf-hebrew": "sf-hebrew", + "sf-mono": "sf-mono", + "sf-pro": "sf-pro" + }, + "locked": { + "lastModified": 1772251183, + "narHash": "sha256-Zfr9trB8LaesfpupugDgXPqC4F25MO18kyMyb9b2PkM=", + "owner": "Lyndeno", + "repo": "apple-fonts.nix", + "rev": "f8dad87c2cb956695d18c1f36360322d8a0b7d63", + "type": "github" + }, + "original": { + "owner": "Lyndeno", + "repo": "apple-fonts.nix", + "type": "github" + } + }, + "chaotic": { + "inputs": { + "flake-schemas": "flake-schemas", + "home-manager": "home-manager", + "jovian": "jovian", + "nixpkgs": "nixpkgs", + "rust-overlay": "rust-overlay" + }, + "locked": { + "lastModified": 1765204341, + "narHash": "sha256-7xd45skcuLCu2DHxVvU+W/z+7CUOjyv+QPtT4PLZaIU=", + "owner": "chaotic-cx", + "repo": "nyx", + "rev": "aacb796ccd42be1555196c20013b9b674b71df75", + "type": "github" + }, + "original": { + "owner": "chaotic-cx", + "ref": "nyxpkgs-unstable", + "repo": "nyx", + "type": "github" + } + }, + "flake-compat": { + "flake": false, + "locked": { + "lastModified": 1747046372, + "narHash": "sha256-CIVLLkVgvHYbgI2UpXvIIBJ12HWgX+fjA8Xf8PUmqCY=", + "owner": "edolstra", + "repo": "flake-compat", + "rev": "9100a0f413b0c601e0533d1d94ffd501ce2e7885", + "type": "github" + }, + "original": { + "owner": "edolstra", + "repo": "flake-compat", + "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" + }, + "locked": { + "lastModified": 1731533236, + "narHash": "sha256-l0KFg5HjrsfsO/JpG+r7fRrqm12kzFHyUHqHCVpMMbI=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "11707dc2f618dd54ca8739b309ec4fc024de578b", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "helium": { + "inputs": { + "flake-compat": "flake-compat", + "flake-utils": "flake-utils", + "nixpkgs": [ + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1774428965, + "narHash": "sha256-uL5wd9mP4A6fg6vNnKl6GTF5MKGzWbgt6kr4cRqyvQM=", + "owner": "AlvaroParker", + "repo": "helium-nix", + "rev": "bef6427c60a6a3ffe64667efaee85e34520b760a", + "type": "github" + }, + "original": { + "owner": "AlvaroParker", + "repo": "helium-nix", + "type": "github" + } + }, + "home-manager": { + "inputs": { + "nixpkgs": [ + "chaotic", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1764998300, + "narHash": "sha256-fZatn/KLfHLDXnF0wy7JxXqGaZmGDTVufT4o/AOlj44=", + "owner": "nix-community", + "repo": "home-manager", + "rev": "27a6182347ccae90a88231ae0dc5dfa7d15815bb", + "type": "github" + }, + "original": { + "owner": "nix-community", + "repo": "home-manager", + "type": "github" + } + }, + "home-manager_2": { + "inputs": { + "nixpkgs": [ + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1774738535, + "narHash": "sha256-2jfBEZUC67IlnxO5KItFCAd7Oc+1TvyV/jQlR+2ykGQ=", + "owner": "nix-community", + "repo": "home-manager", + "rev": "769e07ef8f4cf7b1ec3b96ef015abec9bc6b1e2a", + "type": "github" + }, + "original": { + "owner": "nix-community", + "repo": "home-manager", + "type": "github" + } + }, + "home-manager_3": { + "inputs": { + "nixpkgs": [ + "zen-browser", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1773422513, + "narHash": "sha256-MPjR48roW7CUMU6lu0+qQGqj92Kuh3paIulMWFZy+NQ=", + "owner": "nix-community", + "repo": "home-manager", + "rev": "ef12a9a2b0f77c8fa3dda1e7e494fca668909056", + "type": "github" + }, + "original": { + "owner": "nix-community", + "repo": "home-manager", + "type": "github" + } + }, + "jovian": { + "inputs": { + "nix-github-actions": "nix-github-actions", + "nixpkgs": [ + "chaotic", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1764922999, + "narHash": "sha256-LSvUxKm6S6ZAd/otQSkAHd3+8KJhi8OwGJGSe0K//B8=", + "owner": "Jovian-Experiments", + "repo": "Jovian-NixOS", + "rev": "9b9ead1b5591b68f4048e7205ba1397bc85ce6c4", + "type": "github" + }, + "original": { + "owner": "Jovian-Experiments", + "repo": "Jovian-NixOS", + "type": "github" + } + }, + "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": 1764950072, + "narHash": "sha256-BmPWzogsG2GsXZtlT+MTcAWeDK5hkbGRZTeZNW42fwA=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "f61125a668a320878494449750330ca58b78c557", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_2": { + "locked": { + "lastModified": 1774386573, + "narHash": "sha256-4hAV26quOxdC6iyG7kYaZcM3VOskcPUrdCQd/nx8obc=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "46db2e09e1d3f113a13c0d7b81e2f221c63b8ce9", + "type": "github" + }, + "original": { + "owner": "nixos", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_3": { + "locked": { + "lastModified": 1773389992, + "narHash": "sha256-wvfdLLWJ2I9oEpDd9PfMA8osfIZicoQ5MT1jIwNs9Tk=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "c06b4ae3d6599a672a6210b7021d699c351eebda", + "type": "github" + }, + "original": { + "owner": "nixos", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "ny": { + "flake": false, + "locked": { + "narHash": "sha256-3257NAH4qlan2YHVLpNRy7x8IJqR2pal3OzFo/ykqXs=", + "type": "file", + "url": "https://devimages-cdn.apple.com/design/resources/download/NY.dmg" + }, + "original": { + "type": "file", + "url": "https://devimages-cdn.apple.com/design/resources/download/NY.dmg" + } + }, + "root": { + "inputs": { + "apple-fonts": "apple-fonts", + "chaotic": "chaotic", + "helium": "helium", + "home-manager": "home-manager_2", + "nixpkgs": "nixpkgs_2", + "zen-browser": "zen-browser" + } + }, + "rust-overlay": { + "inputs": { + "nixpkgs": [ + "chaotic", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1765075567, + "narHash": "sha256-KFDCdQcHJ0hE3Nt5Gm5enRIhmtEifAjpxgUQ3mzSJpA=", + "owner": "oxalica", + "repo": "rust-overlay", + "rev": "769156779b41e8787a46ca3d7d76443aaf68be6f", + "type": "github" + }, + "original": { + "owner": "oxalica", + "repo": "rust-overlay", + "type": "github" + } + }, + "sf-arabic": { + "flake": false, + "locked": { + "narHash": "sha256-/0gjRimqvZyE60xYxxPdlU+7Q2LJnnvtbmwOP0YmS9U=", + "type": "file", + "url": "https://devimages-cdn.apple.com/design/resources/download/SF-Arabic.dmg" + }, + "original": { + "type": "file", + "url": "https://devimages-cdn.apple.com/design/resources/download/SF-Arabic.dmg" + } + }, + "sf-armenian": { + "flake": false, + "locked": { + "narHash": "sha256-rRoDkbNMYkzOHZmQm96Zv80TZvRlAeoxkv4pMHP5nUg=", + "type": "file", + "url": "https://devimages-cdn.apple.com/design/resources/download/SF-Armenian.dmg" + }, + "original": { + "type": "file", + "url": "https://devimages-cdn.apple.com/design/resources/download/SF-Armenian.dmg" + } + }, + "sf-compact": { + "flake": false, + "locked": { + "narHash": "sha256-oLhkN4HYkU1Xjxk+xdmyxJmROSzo1qd/tafdxw7icxs=", + "type": "file", + "url": "https://devimages-cdn.apple.com/design/resources/download/SF-Compact.dmg" + }, + "original": { + "type": "file", + "url": "https://devimages-cdn.apple.com/design/resources/download/SF-Compact.dmg" + } + }, + "sf-georgian": { + "flake": false, + "locked": { + "narHash": "sha256-IevVNOC28IiR45YfI3PsZzXLMRxuB5u7UiE53Zn6tRU=", + "type": "file", + "url": "https://devimages-cdn.apple.com/design/resources/download/SF-Georgian.dmg" + }, + "original": { + "type": "file", + "url": "https://devimages-cdn.apple.com/design/resources/download/SF-Georgian.dmg" + } + }, + "sf-hebrew": { + "flake": false, + "locked": { + "narHash": "sha256-Dw84kYwMpCtKKKqm8cZcQ9TZ7GayU5MO7W0LJw0Rcwk=", + "type": "file", + "url": "https://devimages-cdn.apple.com/design/resources/download/SF-Hebrew.dmg" + }, + "original": { + "type": "file", + "url": "https://devimages-cdn.apple.com/design/resources/download/SF-Hebrew.dmg" + } + }, + "sf-mono": { + "flake": false, + "locked": { + "narHash": "sha256-ICdHRFdNL7PM/fXJUzS7LgZxZiqcyIuCMHLze4En4vg=", + "type": "file", + "url": "https://devimages-cdn.apple.com/design/resources/download/SF-Mono.dmg" + }, + "original": { + "type": "file", + "url": "https://devimages-cdn.apple.com/design/resources/download/SF-Mono.dmg" + } + }, + "sf-pro": { + "flake": false, + "locked": { + "narHash": "sha256-s42hsaUe0Vkaw5yw8G7G3W3AYJb2TPqSlMqPyY0e5WU=", + "type": "file", + "url": "https://devimages-cdn.apple.com/design/resources/download/SF-Pro.dmg" + }, + "original": { + "type": "file", + "url": "https://devimages-cdn.apple.com/design/resources/download/SF-Pro.dmg" + } + }, + "systems": { + "locked": { + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "type": "github" + }, + "original": { + "owner": "nix-systems", + "repo": "default", + "type": "github" + } + }, + "zen-browser": { + "inputs": { + "home-manager": "home-manager_3", + "nixpkgs": "nixpkgs_3" + }, + "locked": { + "lastModified": 1774708879, + "narHash": "sha256-rTYvYkQL69/YkZB+MRA/IaX1qJ1lPx5KXoQS2/9+7Mw=", + "owner": "0xc000022070", + "repo": "zen-browser-flake", + "rev": "d01d23c798cceef42307d5789bfbce70515e8800", + "type": "github" + }, + "original": { + "owner": "0xc000022070", + "repo": "zen-browser-flake", + "type": "github" + } + } + }, + "root": "root", + "version": 7 +} diff --git a/flake.nix b/flake.nix new file mode 100644 index 0000000..330f221 --- /dev/null +++ b/flake.nix @@ -0,0 +1,57 @@ +{ + description = "copland nixos configurations"; + + inputs = { + nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable"; + chaotic.url = "github:chaotic-cx/nyx/nyxpkgs-unstable"; + zen-browser.url = "github:0xc000022070/zen-browser-flake"; + + home-manager = { + url = "github:nix-community/home-manager"; + inputs.nixpkgs.follows = "nixpkgs"; + }; + + helium = { + url = "github:AlvaroParker/helium-nix"; + inputs.nixpkgs.follows = "nixpkgs"; + }; + + apple-fonts = { + url = "github:Lyndeno/apple-fonts.nix"; + inputs.nixpkgs.follows = "nixpkgs"; + }; + }; + + outputs = inputs@{ self, nixpkgs, chaotic, home-manager, ... }: + let + system = "x86_64-linux"; + in { + nixosConfigurations = { + copland = nixpkgs.lib.nixosSystem { + inherit system; + specialArgs = { inherit inputs system; zen-browser = inputs.zen-browser; }; + + modules = [ + chaotic.nixosModules.default + # inputs.noctalia.nixosModules.default + home-manager.nixosModules.home-manager + + { nixpkgs.config.allowUnfree = true; } + # { services.noctalia-shell.enable = true; } + + { + home-manager = { + useGlobalPkgs = true; + useUserPackages = true; + extraSpecialArgs = { inherit inputs system; }; + users.elars = import ./home; + }; + } + + ./machine.nix + ./nixos/default.nix + ]; + }; + }; + }; +} diff --git a/gen-hardware.sh b/gen-hardware.sh new file mode 100755 index 0000000..a7d97c6 --- /dev/null +++ b/gen-hardware.sh @@ -0,0 +1,120 @@ +#!/usr/bin/env bash +set -e + +[[ $EUID -ne 0 ]] && echo "Run with sudo" && exit 1 + +# ── CPU ────────────────────────────────────────────────────────────────────── +VENDOR=$(grep -m1 'vendor_id' /proc/cpuinfo | awk '{print $3}') +if [[ "$VENDOR" == "AuthenticAMD" ]]; then + CPU_MICROCODE="hardware.cpu.amd.updateMicrocode" + CPU_KVM="kvm-amd" +else + CPU_MICROCODE="hardware.cpu.intel.updateMicrocode" + CPU_KVM="kvm-intel" +fi + +# ── GPU ────────────────────────────────────────────────────────────────────── +HAS_AMD=false +HAS_NVIDIA=false +lspci | grep -qi 'amd\|radeon' && HAS_AMD=true +lspci | grep -qi 'nvidia' && HAS_NVIDIA=true + +if $HAS_AMD && $HAS_NVIDIA; then + GPU_DRIVER="hybrid-amd-nvidia" +elif $HAS_AMD; then + GPU_DRIVER="amd" +elif $HAS_NVIDIA; then + GPU_DRIVER="nvidia" +else + GPU_DRIVER="intel" +fi + +echo "CPU: $VENDOR → $CPU_KVM" +echo "GPU: $GPU_DRIVER" +echo "" + +INITRD_MODULES="" +if [[ "$GPU_DRIVER" == "hybrid-amd-nvidia" ]]; then + INITRD_MODULES="\"amdgpu\" \"nvidia\" \"nvidia_modeset\" \"nvidia_uvm\" \"nvidia_drm\"" +elif [[ "$GPU_DRIVER" == "intel" ]]; then + INITRD_MODULES="\"i915\"" +elif [[ "$GPU_DRIVER" == "amd" ]]; then + INITRD_MODULES="\"amdgpu\"" +elif [[ "$GPU_DRIVER" == "nvidia" ]]; then + INITRD_MODULES="\"nvidia\" \"nvidia_modeset\" \"nvidia_uvm\" \"nvidia_drm\"" +fi + +# ── Disks ──────────────────────────────────────────────────────────────────── +lsblk -o NAME,SIZE,FSTYPE,UUID,MOUNTPOINT +echo "" + +read -rp "Root partition (e.g. /dev/sda2): " ROOT_PART +[[ ! -b "$ROOT_PART" ]] && echo "Invalid partition" && exit 1 +ROOT_UUID=$(blkid -s UUID -o value "$ROOT_PART") +ROOT_FSTYPE=$(blkid -s TYPE -o value "$ROOT_PART") +echo "Root → $ROOT_UUID ($ROOT_FSTYPE)" + +read -rp "Boot/EFI partition (e.g. /dev/sda1): " BOOT_PART +[[ ! -b "$BOOT_PART" ]] && echo "Invalid partition" && exit 1 +BOOT_UUID=$(blkid -s UUID -o value "$BOOT_PART") +echo "Boot → $BOOT_UUID" + +EXTRA_BLOCK="" +read -rp "Extra partition? (leave empty to skip): " EXTRA_PART +if [[ -n "$EXTRA_PART" ]]; then + EXTRA_UUID=$(blkid -s UUID -o value "$EXTRA_PART") + EXTRA_FSTYPE=$(blkid -s TYPE -o value "$EXTRA_PART") + read -rp "Mount point (e.g. /mnt/hdd): " EXTRA_MOUNT + EXTRA_BLOCK=" + fileSystems.\"$EXTRA_MOUNT\" = { + device = \"/dev/disk/by-uuid/$EXTRA_UUID\"; + fsType = \"$EXTRA_FSTYPE\"; + options = [ \"defaults\" \"nofail\" ]; + }; +" +fi + +# ── Write hardware.nix ─────────────────────────────────────────────────────── +cat > ./hardware.nix <