diff --git a/flake.nix b/flake.nix index 7eb7598..6efb1b0 100644 --- a/flake.nix +++ b/flake.nix @@ -4,6 +4,10 @@ inputs = { nixpkgs.url = "github:NixOS/nixpkgs/release-24.11"; #nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable"; + nixos-cosmic = { + url = "github:lilyinstarlight/nixos-cosmic"; + inputs.nixpkgs.follows = "nixpkgs"; + }; home-manager = { url = "github:nix-community/home-manager/release-24.11"; inputs.nixpkgs.follows = "nixpkgs"; @@ -12,7 +16,7 @@ pinix.url = "github:remi-dupre/pinix"; }; - outputs = inputs@{ self, nixpkgs, home-manager, nixos-hardware, pinix }: { + outputs = inputs@{ self, nixpkgs, nixos-cosmic, home-manager, nixos-hardware, pinix, ... }: { nixosConfigurations = { "nixos" = nixpkgs.lib.nixosSystem { system = "x86_64-linux"; @@ -58,13 +62,20 @@ ./garrus.nix ./gnome.nix ./configuration.nix - nixos-hardware.nixosModules.system76 home-manager.nixosModules.home-manager { home-manager.useGlobalPkgs = true; home-manager.useUserPackages = true; home-manager.users.aaronh = import ./home.nix; } + nixos-hardware.nixosModules.system76 + { + nix.settings = { + substituters = [ "https://cosmic.cachix.org/" ]; + trusted-public-keys = [ "cosmic.cachix.org-1:Dya9IyXD4xdBehWjrkPv6rtxpmMdRel02smYzA85dPE=" ]; + }; + } + nixos-cosmic.nixosModules.default ]; }; diff --git a/home.nix b/home.nix index cc51dde..2495c92 100644 --- a/home.nix +++ b/home.nix @@ -1,12 +1,20 @@ { config, pkgs, ... }: { + # Home Manager needs a bit of information about you and the + # paths it should manage. + home.username = "aaronh"; + home.homeDirectory = "/home/aaronh"; - home = { - username = "aaronh"; - homeDirectory = "/home/aaronh"; - stateVersion = "24.11"; - }; + # This value determines the Home Manager release that your + # configuration is compatible with. This helps avoid breakage + # when a new Home Manager release introduces backwards + # incompatible changes. + # + # You can update Home Manager without changing this value. See + # the Home Manager release notes for a list of state version + # changes in each release. + home.stateVersion = "24.11"; home.packages = with pkgs; [ deja-dup diff --git a/hosts/aarch64/vetra/configuration.nix b/hosts/aarch64/vetra/configuration.nix index f2ad7c5..b196e56 100644 --- a/hosts/aarch64/vetra/configuration.nix +++ b/hosts/aarch64/vetra/configuration.nix @@ -1,9 +1,9 @@ -{ config, pkgs, lib, inputs, ... }: +{ config, pkgs, lib, ... }: { imports = [ -# ./gnome.nix - ]; +# ./gnome.nix + ]; boot = { kernelPackages = pkgs.linuxKernel.packages.linux_rpi4; @@ -33,23 +33,21 @@ # Set your time zone. time.timeZone = "America/Denver"; - environment.systemPackages = - with pkgs; - [ - git - restic - wget - - inputs.nixpkgs-ahoneybun.packages.${system}.honeyfetch - ]; + environment.systemPackages = + with pkgs; + [ + git + restic + wget + ]; # Define user accounts users.users.aaronh = { - description = "Aaron Honeycutt"; - home = "/home/aaronh"; - extraGroups = [ "wheel" "networkmanager" "adm"]; - isNormalUser = true; - hashedPassword = "$6$aAcbLtqiqzySifls$jdKMOQjoWITHD/dWNNZVUH/qNc6aoJ7v4zYofi0U7IJSVTbmOfChS3mzaJbp57AodjdPNKPrnrip8Nlh2Qanx."; + description = "Aaron Honeycutt"; + home = "/home/aaronh"; + extraGroups = [ "wheel" "networkmanager" "adm"]; + isNormalUser = true; + hashedPassword = "$6$aAcbLtqiqzySifls$jdKMOQjoWITHD/dWNNZVUH/qNc6aoJ7v4zYofi0U7IJSVTbmOfChS3mzaJbp57AodjdPNKPrnrip8Nlh2Qanx."; }; # Enable Pipewire @@ -60,7 +58,7 @@ alsa.support32Bit = true; pulse.enable = true; }; - + # Turn off PulseAudio hardware.pulseaudio.enable = false; @@ -70,13 +68,21 @@ # Enable SSH services.openssh.enable = true; - # Enable Tailscale - services.tailscale.enable = true; - + # Enable CUPS + services.printing.enable = true; + # Allow Unfree nixpkgs.config.allowUnfree = true; - # System - system.stateVersion = "24.11"; + services.hydra = { + enable = false; + hydraURL = "http://localhost:3000"; + notificationSender = "hydra@localhost"; + buildMachinesFiles = []; + useSubstitutes = true; + }; + + # System + system.stateVersion = "24.05"; system.autoUpgrade.enable = true; } diff --git a/hosts/aarch64/vetra/flake.nix b/hosts/aarch64/vetra/flake.nix index ffa883a..0764a0d 100644 --- a/hosts/aarch64/vetra/flake.nix +++ b/hosts/aarch64/vetra/flake.nix @@ -2,23 +2,108 @@ description = "Vetra"; inputs = { - nixpkgs.url = "github:NixOS/nixpkgs/release-24.11"; + nixpkgs.url = "github:NixOS/nixpkgs/release-23.05"; home-manager = { - url = "github:nix-community/home-manager/release-24.11"; + url = "github:nix-community/home-manager/release-22.11"; inputs.nixpkgs.follows = "nixpkgs"; }; nixos-hardware.url = "github:NixOS/nixos-hardware/master"; - nixpkgs-ahoneybun.url = "gitlab:ahoneybun-nix/nixpkgs/main"; }; - outputs = inputs@{ self, nixpkgs, home-manager, nixos-hardware, nixpkgs-ahoneybun, ... }: { + outputs = { self, nixpkgs, nixos-hardware, ... }@inputs: { nixosConfigurations = { "vetra" = nixpkgs.lib.nixosSystem { system = "aarch64-linux"; - specialArgs = { inherit inputs; }; modules = [ - nixos-hardware.nixosModules.raspberry-pi-4 - ./configuration.nix + # Import the configuration.nix we used before, so that the old configuration file can still take effect. + # Note: /etc/nixos/configuration.nix itself is also a Nix Module, so you can import it directly here + nixos-hardware.nixosModules.raspberry-pi-4 +# ./configuration.nix + + ({config, pkgs, ...}: { + fileSystems = { + "/" = { + device = "/dev/disk/by-label/NIXOS_SD"; + fsType = "ext4"; + options = [ "noatime" ]; + }; + + "/mnt/ExtraDrive" = { + device = "/dev/disk/by-uuid/72315f9e-ceda-4152-8e8d-09590affba28"; + fsType = "ext4"; + }; + }; + + nix = { + settings.auto-optimise-store = true; + settings.experimental-features = [ "nix-command" "flakes" ]; + + gc = { + automatic = true; + dates = "weekly"; + options = "--delete-older-than 30d"; + }; + }; + + networking = { + hostName = "vetra"; + networkmanager.enable = true; + }; + + time.timeZone = "America/Denver"; + + environment.systemPackages = with pkgs; [ + fish + git + neofetch + restic + wget + ]; + + users.users.aaronh = { + description = "Aaron Honeycutt"; + home = "/home/aaronh"; + extraGroups = [ "wheel" "networkmanager" "adm" ]; + isNormalUser = true; + shell = pkgs.fish; + hashedPassword = "$6$aAcbLtqiqzySifls$jdKMOQjoWITHD/dWNNZVUH/qNc6aoJ7v4zYofi0U7IJSVTbmOfChS3mzaJbp57AodjdPNKPrnrip8Nlh2Qanx."; + }; + + programs.fish.enable = true; + + # Enable Pipewire + security.rtkit.enable = true; + services.pipewire = { + enable = true; + alsa.enable = true; + alsa.support32Bit = true; + pulse.enable = true; + }; + + # Turn off PulseAudio + hardware.pulseaudio.enable = false; + + # Enable Bluetooth + hardware.bluetooth.enable = true; + + # Enable SSH + services.openssh.enable = true; + + # Enable CUPS + services.printing.enable = true; + + # Enable GPU Acceleration + hardware.raspberry-pi."4".fkms-3d.enable = true; + + # Allow Unfree + nixpkgs.config.allowUnfree = true; + + # System + system = { + stateVersion = "23.05"; + autoUpgrade.enable = true; + }; + }) ]; }; };