dot
vizie's NixOS desktop: Hyprland, CachyOS kernel and gaming tweaks
| 1 | { |
| 2 | description = "vizie's NixOS desktop: Hyprland, CachyOS kernel and gaming tweaks"; |
| 3 | |
| 4 | inputs = { |
| 5 | nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable"; |
| 6 | |
| 7 | # Signal 8.31.0, from a master commit (already in cache.nixos.org). CachyOS |
| 8 | # ran 8.31.0, and Signal won't open a database a newer version has written. |
| 9 | # Only used while nixos-unstable's Signal is older (pkgs/default.nix). |
| 10 | nixpkgs-signal.url = "github:NixOS/nixpkgs/70ae5c224b56eaeadf74327811fd59b1470defbe"; |
| 11 | |
| 12 | home-manager = { |
| 13 | url = "github:nix-community/home-manager"; |
| 14 | inputs.nixpkgs.follows = "nixpkgs"; |
| 15 | }; |
| 16 | |
| 17 | # Partitions and formats the drive at install time (hosts/desktop/disko.nix). |
| 18 | disko = { |
| 19 | url = "github:nix-community/disko/latest"; |
| 20 | inputs.nixpkgs.follows = "nixpkgs"; |
| 21 | }; |
| 22 | |
| 23 | # CachyOS kernels. Its nixpkgs input is left alone on purpose: the kernel |
| 24 | # stays the exact build upstream tests (it compiles locally, as its binary |
| 25 | # cache isn't used). |
| 26 | nix-cachyos-kernel.url = "github:xddxdd/nix-cachyos-kernel/release"; |
| 27 | |
| 28 | imsh-clients = { |
| 29 | url = "github:echozio/imsh-clients"; |
| 30 | inputs.nixpkgs.follows = "nixpkgs"; |
| 31 | }; |
| 32 | |
| 33 | # Private repo: fetched with git so the gh credential helper can sign in. |
| 34 | philly = { |
| 35 | url = "git+https://github.com/Eiziv/philly?ref=master"; |
| 36 | inputs.nixpkgs.follows = "nixpkgs"; |
| 37 | }; |
| 38 | }; |
| 39 | |
| 40 | outputs = |
| 41 | { self, nixpkgs, ... }@inputs: |
| 42 | let |
| 43 | system = "x86_64-linux"; |
| 44 | pkgs = import nixpkgs { |
| 45 | inherit system; |
| 46 | config.allowUnfree = true; |
| 47 | overlays = [ self.overlays.default ]; |
| 48 | }; |
| 49 | in |
| 50 | { |
| 51 | overlays.default = import ./pkgs inputs; |
| 52 | |
| 53 | # The packages this repo adds or patches, so each can be built on its own: |
| 54 | # nix build .#waybar |
| 55 | packages. = { |
| 56 | inherit (pkgs) |
| 57 | waybar |
| 58 | xembedsniproxy |
| 59 | signal-desktop-themed |
| 60 | claude-desktop |
| 61 | opendeck |
| 62 | breezex-cursor |
| 63 | proton-cachyos |
| 64 | python3-desktop |
| 65 | ; |
| 66 | }; |
| 67 | |
| 68 | nixosConfigurations.desktop = nixpkgs.lib.nixosSystem { |
| 69 | inherit system; |
| 70 | specialArgs = { inherit inputs; }; |
| 71 | modules = [ ./hosts/desktop ]; |
| 72 | }; |
| 73 | |
| 74 | # Tools for working on this repo, here and on the MacBook: |
| 75 | # nix develop |
| 76 | devShells = nixpkgs.lib.genAttrs [ "x86_64-linux" "aarch64-darwin" ] ( |
| 77 | shellSystem: |
| 78 | let |
| 79 | shellPkgs = nixpkgs.legacyPackages.; |
| 80 | in |
| 81 | { |
| 82 | default = shellPkgs.mkShellNoCC { |
| 83 | packages = [ |
| 84 | # Installs the desktop over SSH (MIGRATION.md). |
| 85 | shellPkgs.nixos-anywhere |
| 86 | shellPkgs.nixfmt |
| 87 | ]; |
| 88 | }; |
| 89 | } |
| 90 | ); |
| 91 | |
| 92 | formatter. = pkgs.nixfmt; |
| 93 | }; |
| 94 | } |