diff --git a/flake.lock b/flake.lock index cc0aa01..b1b8b8f 100644 --- a/flake.lock +++ b/flake.lock @@ -1,125 +1,108 @@ { "nodes": { - "home-manager": { + "flake-parts": { "inputs": { - "nixpkgs": [ - "nixpkgs" - ] + "nixpkgs-lib": "nixpkgs-lib" }, "locked": { - "lastModified": 1776184304, - "narHash": "sha256-No6QGBmIv5ChiwKCcbkxjdEQ/RO2ZS1gD7SFy6EZ7rc=", - "owner": "nix-community", - "repo": "home-manager", - "rev": "3c7524c68348ef79ce48308e0978611a050089b2", + "lastModified": 1775087534, + "narHash": "sha256-91qqW8lhL7TLwgQWijoGBbiD4t7/q75KTi8NxjVmSmA=", + "owner": "hercules-ci", + "repo": "flake-parts", + "rev": "3107b77cd68437b9a76194f0f7f9c55f2329ca5b", "type": "github" }, "original": { - "owner": "nix-community", - "repo": "home-manager", + "owner": "hercules-ci", + "repo": "flake-parts", + "type": "github" + } + }, + "import-tree": { + "locked": { + "lastModified": 1773693634, + "narHash": "sha256-BtZ2dtkBdSUnFPPFc+n0kcMbgaTxzFNPv2iaO326Ffg=", + "owner": "vic", + "repo": "import-tree", + "rev": "c41e7d58045f9057880b0d85e1152d6a4430dbf1", + "type": "github" + }, + "original": { + "owner": "vic", + "repo": "import-tree", "type": "github" } }, "nixpkgs": { "locked": { - "lastModified": 1776169885, - "narHash": "sha256-l/iNYDZ4bGOAFQY2q8y5OAfBBtrDAaPuRQqWaFHVRXM=", + "lastModified": 1776877367, + "narHash": "sha256-EHq1/OX139R1RvBzOJ0aMRT3xnWyqtHBRUBuO1gFzjI=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "0726a0ecb6d4e08f6adced58726b95db924cef57", + "type": "github" + }, + "original": { + "owner": "nixos", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-lib": { + "locked": { + "lastModified": 1774748309, + "narHash": "sha256-+U7gF3qxzwD5TZuANzZPeJTZRHS29OFQgkQ2kiTJBIQ=", + "owner": "nix-community", + "repo": "nixpkgs.lib", + "rev": "333c4e0545a6da976206c74db8773a1645b5870a", + "type": "github" + }, + "original": { + "owner": "nix-community", + "repo": "nixpkgs.lib", + "type": "github" + } + }, + "nixpkgs_2": { + "locked": { + "lastModified": 1775579569, + "narHash": "sha256-/m3yyS/EnXqoPGBJYVy4jTOsirdgsEZ3JdN2gGkBr14=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "4bd9165a9165d7b5e33ae57f3eecbcb28fb231c9", + "rev": "dfd9566f82a6e1d55c30f861879186440614696e", "type": "github" }, "original": { - "id": "nixpkgs", - "ref": "nixos-unstable", - "type": "indirect" - } - }, - "noctalia": { - "inputs": { - "nixpkgs": [ - "nixpkgs" - ], - "noctalia-qs": "noctalia-qs" - }, - "locked": { - "lastModified": 1776240823, - "narHash": "sha256-QAdipw26rtLJWKY7EWX7k+pyvCQwF4+PObggxWbiT74=", - "owner": "noctalia-dev", - "repo": "noctalia-shell", - "rev": "76b03be48965cb01faabe167f80a8995fb76a92e", - "type": "github" - }, - "original": { - "owner": "noctalia-dev", - "repo": "noctalia-shell", - "type": "github" - } - }, - "noctalia-qs": { - "inputs": { - "nixpkgs": [ - "noctalia", - "nixpkgs" - ], - "systems": "systems", - "treefmt-nix": "treefmt-nix" - }, - "locked": { - "lastModified": 1775957204, - "narHash": "sha256-d4CVRtAty2GzDYXx4xYQmR+nlOjjKovyprQfZhgLckU=", - "owner": "noctalia-dev", - "repo": "noctalia-qs", - "rev": "68e82fe34c68ee839a9c37e3466820e266af0c86", - "type": "github" - }, - "original": { - "owner": "noctalia-dev", - "repo": "noctalia-qs", + "owner": "NixOS", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", "type": "github" } }, "root": { "inputs": { - "home-manager": "home-manager", + "flake-parts": "flake-parts", + "import-tree": "import-tree", "nixpkgs": "nixpkgs", - "noctalia": "noctalia" + "wrapper-modules": "wrapper-modules" } }, - "systems": { - "locked": { - "lastModified": 1689347949, - "narHash": "sha256-12tWmuL2zgBgZkdoB6qXZsgJEH9LR3oUgpaQq2RbI80=", - "owner": "nix-systems", - "repo": "default-linux", - "rev": "31732fcf5e8fea42e59c2488ad31a0e651500f68", - "type": "github" - }, - "original": { - "owner": "nix-systems", - "repo": "default-linux", - "type": "github" - } - }, - "treefmt-nix": { + "wrapper-modules": { "inputs": { - "nixpkgs": [ - "noctalia", - "noctalia-qs", - "nixpkgs" - ] + "nixpkgs": "nixpkgs_2" }, "locked": { - "lastModified": 1775636079, - "narHash": "sha256-pc20NRoMdiar8oPQceQT47UUZMBTiMdUuWrYu2obUP0=", - "owner": "numtide", - "repo": "treefmt-nix", - "rev": "790751ff7fd3801feeaf96d7dc416a8d581265ba", + "lastModified": 1777158145, + "narHash": "sha256-xYXjoA5+9aDu/A4Og/89JF8n41b7vca9av1ecyR6dgo=", + "owner": "BirdeeHub", + "repo": "nix-wrapper-modules", + "rev": "fd6d1dc5fdfb1aa39c355f4da36773a972a35721", "type": "github" }, "original": { - "owner": "numtide", - "repo": "treefmt-nix", + "owner": "BirdeeHub", + "repo": "nix-wrapper-modules", "type": "github" } } diff --git a/flake.nix b/flake.nix index bc59f75..8125a30 100644 --- a/flake.nix +++ b/flake.nix @@ -1,80 +1,15 @@ { - description = "Nest's Flake"; - inputs = { - nixpkgs.url = "nixpkgs/nixos-unstable"; + nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable"; - home-manager = { - url = "github:nix-community/home-manager"; - inputs.nixpkgs.follows = "nixpkgs"; - }; + flake-parts.url = "github:hercules-ci/flake-parts"; + import-tree.url = "github:vic/import-tree"; - noctalia = { - url = "github:noctalia-dev/noctalia-shell"; - inputs.nixpkgs.follows = "nixpkgs"; - }; + wrapper-modules.url = "github:BirdeeHub/nix-wrapper-modules"; }; - outputs = { self, nixpkgs, ... }@inputs: - let - inherit (self) outputs; - - # Set the default user. Can be overitten on a system level - vars.user = "nest"; - - # List of system types our hosts use - systems = [ "x86_64-linux" ]; - - # Generic NixOS config - mkNixOSConfig = { - path, - extraModules ? [], - vars, - }: - nixpkgs.lib.nixosSystem { - specialArgs = { - inherit inputs outputs vars; - }; - - modules = [ - ./nixos/common - path - ] - ++ extraModules; - }; - - # Additional modules for physical hosts - mkPhysicalNixOSConfig = path: - let - updatedVars = vars // { - hostType = "physical"; - hostName = "crow"; - }; - in - mkNixOSConfig { - vars = updatedVars; - path = path; - extraModules = [ ./hosts/physical ]; - }; - - # Additional modules for servers - # mkServerNixOSConfig = path: serverType: - # mkNixOSConfig { - # path = path; - # extraModules = [ - # ./hosts/server - # ./nixos/roles/server/${serverType} - # ./nixos/modules/backup - # ]; - # }; - in { - # Format our nix files using alejandra - formatter = nixpkgs.lib.genAttrs systems (system: nixpkgs.legacyPackages.${system}.alejandra); - - # Collection of all of our configs - nixosConfigurations = { - # =========== Desktops =========== - crow = mkPhysicalNixOSConfig ./hosts/physical/crow; - }; - }; + # import modules/ automatically + outputs = inputs: inputs.flake-parts.lib.mkFlake + {inherit inputs;} + (inputs.import-tree ./modules); } diff --git a/modules/hosts/crow/bluetooth.nix b/modules/hosts/crow/bluetooth.nix new file mode 100644 index 0000000..fa50366 --- /dev/null +++ b/modules/hosts/crow/bluetooth.nix @@ -0,0 +1,25 @@ +{ self, inputs, ... }: { + flake.nixosModules.bluetooth = { inputs, ... }: { + hardware.bluetooth = { + enable = true; + powerOnBoot = true; + settings = { + General = { + # Shows battery charge of connected devices on supported + # Bluetooth adapters. Defaults to 'false'. + Experimental = true; + # When enabled other devices can connect faster to us, however + # the tradeoff is increased power consumption. Defaults to + # 'false'. + FastConnectable = true; + }; + Policy = { + # Enable all controllers when they are found. This includes + # adapters present on start as well as adapters that are plugged + # in later on. Defaults to 'true'. + AutoEnable = true; + }; + }; + }; + }; +} diff --git a/modules/hosts/crow/ckb-next.nix b/modules/hosts/crow/ckb-next.nix new file mode 100644 index 0000000..8194fe0 --- /dev/null +++ b/modules/hosts/crow/ckb-next.nix @@ -0,0 +1,10 @@ +{ self, inputs, ... }: { + flake.nixosModules.ckb-next = { inputs, ... }: { + hardware.ckb-next = { + enable = true; + package = pkgs.ckb-next.overrideAttrs (old: { + cmakeFlags = (old.cmakeFlags or [ ]) ++ [ "-DUSE_DBUS_MENU=0" ]; + }); + }; + }; +} diff --git a/modules/hosts/crow/configuration.nix b/modules/hosts/crow/configuration.nix new file mode 100644 index 0000000..52c19fb --- /dev/null +++ b/modules/hosts/crow/configuration.nix @@ -0,0 +1,17 @@ +{ self, inputs, ... }: { + flake.nixosModules.crowConfiguration = { pkgs, lib, ... }: { + imports = [ + ./hardware-configuration.nix + ]; + + nix.settings.experimental-features = [ "nix-commands" "flakes" ]; + + environment.systemPackages = with pkgs; [ + pavucontrol + bolt-launcher + wine + usbutils + virt-manager + ]; + }; +} diff --git a/modules/hosts/crow/default.nix b/modules/hosts/crow/default.nix new file mode 100644 index 0000000..92627d4 --- /dev/null +++ b/modules/hosts/crow/default.nix @@ -0,0 +1,5 @@ +{ self, inputs, ... }: { + flake.nixosConfigurations.crow = inputs.nixpkgs.lib.nixosSystem { + modules= [ ]; + }; +} diff --git a/modules/hosts/crow/hardware.nix b/modules/hosts/crow/hardware.nix new file mode 100644 index 0000000..235fd11 --- /dev/null +++ b/modules/hosts/crow/hardware.nix @@ -0,0 +1,35 @@ +{ self, inputs, ... }: { + flake.nixosModules.crowHardware = { config, lib, pkgs, modulesPath, ... }: { + imports = + [ (modulesPath + "/installer/scan/not-detected.nix") + ]; + + boot.initrd.availableKernelModules = [ "xhci_pci" "ahci" "nvme" "usbhid" "sd_mod" ]; + boot.initrd.kernelModules = [ ]; + boot.kernelModules = [ "kvm-intel" ]; + boot.extraModulePackages = [ ]; + + fileSystems."/" = + { device = "/dev/disk/by-uuid/310d77f1-247d-4db9-9db0-be6b70483bd8"; + fsType = "ext4"; + }; + + fileSystems."/mnt/steam" = + { device = "/dev/disk/by-uuid/f800bb63-5798-4faa-b2d2-50073215e391"; + fsType = "ext4"; + }; + + fileSystems."/boot" = + { device = "/dev/disk/by-uuid/9F36-9DE8"; + fsType = "vfat"; + options = [ "fmask=0022" "dmask=0022" ]; + }; + + swapDevices = + [ { device = "/dev/disk/by-uuid/d7fbd2b2-c943-457b-afc1-ad355d30a5c2"; } + ]; + + nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux"; + hardware.cpu.intel.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware; + }; +}