diff --git a/nix/flake.lock b/nix/flake.lock new file mode 100644 index 00000000..2dbe1ea2 --- /dev/null +++ b/nix/flake.lock @@ -0,0 +1,324 @@ +{ + "nodes": { + "aquamarine": { + "inputs": { + "hyprutils": [ + "hyprland", + "hyprutils" + ], + "hyprwayland-scanner": [ + "hyprland", + "hyprwayland-scanner" + ], + "nixpkgs": [ + "hyprland", + "nixpkgs" + ], + "systems": [ + "hyprland", + "systems" + ] + }, + "locked": { + "lastModified": 1725753098, + "narHash": "sha256-/NO/h/qD/eJXAQr/fHA4mdDgYsNT9thHQ+oT6KPi2ac=", + "owner": "hyprwm", + "repo": "aquamarine", + "rev": "e4a13203112a036fc7f437d391c7810f3dd5ab52", + "type": "github" + }, + "original": { + "owner": "hyprwm", + "repo": "aquamarine", + "type": "github" + } + }, + "home-manager": { + "inputs": { + "nixpkgs": [ + "nixpkgs-stable" + ] + }, + "locked": { + "lastModified": 1725703823, + "narHash": "sha256-tDgM4d8mLK0Hd6YMB2w1BqMto1XBXADOzPEaLl10VI4=", + "owner": "nix-community", + "repo": "home-manager", + "rev": "208df2e558b73b6a1f0faec98493cb59a25f62ba", + "type": "github" + }, + "original": { + "owner": "nix-community", + "ref": "release-24.05", + "repo": "home-manager", + "type": "github" + } + }, + "hyprcursor": { + "inputs": { + "hyprlang": [ + "hyprland", + "hyprlang" + ], + "nixpkgs": [ + "hyprland", + "nixpkgs" + ], + "systems": [ + "hyprland", + "systems" + ] + }, + "locked": { + "lastModified": 1722623071, + "narHash": "sha256-sLADpVgebpCBFXkA1FlCXtvEPu1tdEsTfqK1hfeHySE=", + "owner": "hyprwm", + "repo": "hyprcursor", + "rev": "912d56025f03d41b1ad29510c423757b4379eb1c", + "type": "github" + }, + "original": { + "owner": "hyprwm", + "repo": "hyprcursor", + "type": "github" + } + }, + "hyprland": { + "inputs": { + "aquamarine": "aquamarine", + "hyprcursor": "hyprcursor", + "hyprlang": "hyprlang", + "hyprutils": "hyprutils", + "hyprwayland-scanner": "hyprwayland-scanner", + "nixpkgs": [ + "nixpkgs-unstable" + ], + "systems": "systems", + "xdph": "xdph" + }, + "locked": { + "lastModified": 1726246604, + "narHash": "sha256-QA9xHo1/TvpQyCtL0b1RsTlxSWSl4iduuIEdggEs1qo=", + "owner": "hyprwm", + "repo": "Hyprland", + "rev": "d35e70a8c6599bb058cf86eb87c783ce1cf72471", + "type": "github" + }, + "original": { + "owner": "hyprwm", + "repo": "Hyprland", + "type": "github" + } + }, + "hyprland-protocols": { + "inputs": { + "nixpkgs": [ + "hyprland", + "xdph", + "nixpkgs" + ], + "systems": [ + "hyprland", + "xdph", + "systems" + ] + }, + "locked": { + "lastModified": 1721326555, + "narHash": "sha256-zCu4R0CSHEactW9JqYki26gy8h9f6rHmSwj4XJmlHgg=", + "owner": "hyprwm", + "repo": "hyprland-protocols", + "rev": "5a11232266bf1a1f5952d5b179c3f4b2facaaa84", + "type": "github" + }, + "original": { + "owner": "hyprwm", + "repo": "hyprland-protocols", + "type": "github" + } + }, + "hyprlang": { + "inputs": { + "hyprutils": [ + "hyprland", + "hyprutils" + ], + "nixpkgs": [ + "hyprland", + "nixpkgs" + ], + "systems": [ + "hyprland", + "systems" + ] + }, + "locked": { + "lastModified": 1725997860, + "narHash": "sha256-d/rZ/fHR5l1n7PeyLw0StWMNLXVU9c4HFyfskw568so=", + "owner": "hyprwm", + "repo": "hyprlang", + "rev": "dfeb5811dd6485490cce18d6cc1e38a055eea876", + "type": "github" + }, + "original": { + "owner": "hyprwm", + "repo": "hyprlang", + "type": "github" + } + }, + "hyprutils": { + "inputs": { + "nixpkgs": [ + "hyprland", + "nixpkgs" + ], + "systems": [ + "hyprland", + "systems" + ] + }, + "locked": { + "lastModified": 1724966483, + "narHash": "sha256-WXDgKIbzjYKczxSZOsJplCS1i1yrTUpsDPuJV/xpYLo=", + "owner": "hyprwm", + "repo": "hyprutils", + "rev": "8976e3f6a5357da953a09511d0c7f6a890fb6ec2", + "type": "github" + }, + "original": { + "owner": "hyprwm", + "repo": "hyprutils", + "type": "github" + } + }, + "hyprwayland-scanner": { + "inputs": { + "nixpkgs": [ + "hyprland", + "nixpkgs" + ], + "systems": [ + "hyprland", + "systems" + ] + }, + "locked": { + "lastModified": 1721324119, + "narHash": "sha256-SOOqIT27/X792+vsLSeFdrNTF+OSRp5qXv6Te+fb2Qg=", + "owner": "hyprwm", + "repo": "hyprwayland-scanner", + "rev": "a048a6cb015340bd82f97c1f40a4b595ca85cc30", + "type": "github" + }, + "original": { + "owner": "hyprwm", + "repo": "hyprwayland-scanner", + "type": "github" + } + }, + "nixpkgs": { + "locked": { + "lastModified": 1725930920, + "narHash": "sha256-RVhD9hnlTT2nJzPHlAqrWqCkA7T6CYrP41IoVRkciZM=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "44a71ff39c182edaf25a7ace5c9454e7cba2c658", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-24.05", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-stable": { + "locked": { + "lastModified": 1725930920, + "narHash": "sha256-RVhD9hnlTT2nJzPHlAqrWqCkA7T6CYrP41IoVRkciZM=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "44a71ff39c182edaf25a7ace5c9454e7cba2c658", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-24.05", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-unstable": { + "locked": { + "lastModified": 1726062873, + "narHash": "sha256-IiA3jfbR7K/B5+9byVi9BZGWTD4VSbWe8VLpp9B/iYk=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "4f807e8940284ad7925ebd0a0993d2a1791acb2f", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "root": { + "inputs": { + "home-manager": "home-manager", + "hyprland": "hyprland", + "nixpkgs": "nixpkgs", + "nixpkgs-stable": "nixpkgs-stable", + "nixpkgs-unstable": "nixpkgs-unstable" + } + }, + "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" + } + }, + "xdph": { + "inputs": { + "hyprland-protocols": "hyprland-protocols", + "hyprlang": [ + "hyprland", + "hyprlang" + ], + "nixpkgs": [ + "hyprland", + "nixpkgs" + ], + "systems": [ + "hyprland", + "systems" + ] + }, + "locked": { + "lastModified": 1726046979, + "narHash": "sha256-6SEsjurq9cdTkITA6d49ncAJe4O/8CgRG5/F//s6Xh8=", + "owner": "hyprwm", + "repo": "xdg-desktop-portal-hyprland", + "rev": "e695669fd8e1d1be9eaae40f35e00f8bd8b64c18", + "type": "github" + }, + "original": { + "owner": "hyprwm", + "repo": "xdg-desktop-portal-hyprland", + "type": "github" + } + } + }, + "root": "root", + "version": 7 +} diff --git a/nix/flake.nix b/nix/flake.nix new file mode 100644 index 00000000..156f8caa --- /dev/null +++ b/nix/flake.nix @@ -0,0 +1,44 @@ +{ + description = "Joey's Flake"; + inputs = { + nixpkgs.url = "github:NixOS/nixpkgs/nixos-24.05"; + nixpkgs-stable.url = "github:NixOS/nixpkgs/nixos-24.05"; + nixpkgs-unstable.url = "github:NixOS/nixpkgs/nixos-unstable"; + hyprland.url = "github:hyprwm/Hyprland"; + hyprland.inputs.nixpkgs.follows = "nixpkgs-unstable"; + home-manager.url = "github:nix-community/home-manager/release-24.05"; + home-manager.inputs.nixpkgs.follows = "nixpkgs-stable"; + }; + outputs = { + self, + nixpkgs, + nixpkgs-stable, + nixpkgs-unstable, + home-manager, + hyprland, + ... + }@inputs: + let + lib = nixpkgs.lib; + system = "x86_64-linux"; + pkgs = nixpkgs.legacyPackages.${system}; + in { + nixosConfigurations = { + joey-laptop = lib.nixosSystem { + specialArgs = { inherit inputs; }; + system = system; + modules = [ + ./nixos/configuration.nix + inputs.home-manager.nixosModules.default + inputs.hyprland.nixosModules.default + ]; + }; + }; + homeConfigurations = { + joey = home-manager.lib.homeManagerConfiguration { + pkgs = pkgs; + modules = [ ./home-manager/home.nix ]; + }; + }; + }; +} diff --git a/nix/home-manager/home.nix b/nix/home-manager/home.nix new file mode 100644 index 00000000..ea883b78 --- /dev/null +++ b/nix/home-manager/home.nix @@ -0,0 +1,47 @@ +{ config, pkgs, ... }: + +{ + home.username = "joey"; + home.homeDirectory = "/home/joey"; + home.stateVersion = "24.05"; + home.packages = [ + pkgs.fastfetch + ]; + home.file = {}; + home.sessionVariables = {}; + + # Programs + programs.kitty.enable = true; + wayland.windowManager.hyprland = { + enable = true; + settings = { + decoration = { + shadow_offset = "0 5"; + "col.shadow" = "rgba(00000099)"; + }; + "$mod" = "SUPER"; + bindm = [ + "$mod, mouse:272, movewindow" + "$mod, mouse:273, resizewindow" + "$mod, ALT, mouse:272, resizewindow" + ]; + }; + }; + + programs.git = { + enable = true; + userName = "Joey Hafner"; + userEmail = "joey@jafner.net"; + }; + + programs.zsh = { + enable = true; + dotDir = ".config/zsh"; + enableCompletion = true; + autosuggestion.enable = true; + }; + + programs.home-manager = { + enable = true; + }; +} diff --git a/nix/nixos/configuration.nix b/nix/nixos/configuration.nix new file mode 100644 index 00000000..b9e149b1 --- /dev/null +++ b/nix/nixos/configuration.nix @@ -0,0 +1,105 @@ +{ config, pkgs, inputs, ... }: + +{ + imports = + [ + ./hardware-configuration.nix + ]; + environment.etc."current-system-packages".text = + let + packages = builtins.map (p: "${ p.name }") config.environment.systemPackages; + sortedUnique = builtins.sort builtins.lessThan (pkgs.lib.lists.unique packages); + formatted = builtins.concatStringsSep "\n" sortedUnique; + in + formatted; + + security.sudo = { + enable = true; + extraRules = [{ + commands = [ + { + command = "ALL"; + options = [ "NOPASSWD" ]; + } + ]; + groups = [ "wheel" ]; + }]; + }; + services.openssh = { + enable = true; + settings.PasswordAuthentication = false; + settings.KbdInteractiveAuthentication = false; + }; + + nix.settings.experimental-features = [ "nix-command" "flakes" ]; + + boot.loader.systemd-boot.enable = true; + boot.loader.efi.canTouchEfiVariables = true; + + networking.hostName = "joey-laptop"; + + networking.networkmanager.enable = true; + time.timeZone = "America/Los_Angeles"; + i18n.defaultLocale = "en_US.UTF-8"; + i18n.extraLocaleSettings = { + LC_ADDRESS = "en_US.UTF-8"; + LC_IDENTIFICATION = "en_US.UTF-8"; + LC_MEASUREMENT = "en_US.UTF-8"; + LC_MONETARY = "en_US.UTF-8"; + LC_NAME = "en_US.UTF-8"; + LC_NUMERIC = "en_US.UTF-8"; + LC_PAPER = "en_US.UTF-8"; + LC_TELEPHONE = "en_US.UTF-8"; + LC_TIME = "en_US.UTF-8"; + }; + + services.displayManager.sddm.enable = true; + services.desktopManager.plasma6.enable = true; + + services.xserver.enable = true; + services.xserver.xkb = { + layout = "us"; + variant = ""; + }; + + services.printing.enable = true; + + hardware.pulseaudio.enable = false; + security.rtkit.enable = true; + services.pipewire = { + enable = true; + alsa.enable = true; + alsa.support32Bit = true; + pulse.enable = true; + }; + + users.users.joey = { + isNormalUser = true; + description = "joey"; + extraGroups = [ "networkmanager" "wheel" ]; + packages = with pkgs; [ + ]; + }; + + systemd.services."getty@tty1".enable = false; + systemd.services."autovt@tty1".enable = false; + nixpkgs.config.allowUnfree = true; + environment.systemPackages = with pkgs; [ + vim + git + fastfetch + waybar mako libnotify swww kitty rofi-wayland polkit-kde-agent wl-clipboard + ]; + + #programs.kitty.enable = true; # This line is present in hyprland's install docs, but seems to be invalid + programs.hyprland.enable = true; + #programs.hyprland.xwayland.enable = true; + #programs.hyprland.package = inputs.hyprland.packages."${pkgs.system}".hyprland; + xdg.portal.enable = true; + xdg.portal.extraPortals = with pkgs; [ xdg-desktop-portal-gtk ]; + xdg.portal.config.common.default = "*"; + + system.stateVersion = "24.05"; + +} + diff --git a/nix/nixos/hardware-configuration.nix b/nix/nixos/hardware-configuration.nix new file mode 100644 index 00000000..a0705eae --- /dev/null +++ b/nix/nixos/hardware-configuration.nix @@ -0,0 +1,42 @@ +# Do not modify this file! It was generated by ‘nixos-generate-config’ +# and may be overwritten by future invocations. Please make changes +# to /etc/nixos/configuration.nix instead. +{ config, lib, pkgs, modulesPath, ... }: + +{ + imports = + [ (modulesPath + "/hardware/network/broadcom-43xx.nix") + (modulesPath + "/installer/scan/not-detected.nix") + ]; + + boot.initrd.availableKernelModules = [ "xhci_pci" "ahci" "nvme" "usb_storage" "sd_mod" "rtsx_pci_sdmmc" ]; + boot.initrd.kernelModules = [ ]; + boot.kernelModules = [ "kvm-intel" ]; + boot.extraModulePackages = [ ]; + + fileSystems."/" = + { device = "/dev/disk/by-uuid/67cfde6b-b037-4605-886d-062ec5b8cd46"; + fsType = "ext4"; + }; + + fileSystems."/boot" = + { device = "/dev/disk/by-uuid/EE88-0D1C"; + fsType = "vfat"; + options = [ "fmask=0077" "dmask=0077" ]; + }; + + swapDevices = + [ { device = "/dev/disk/by-uuid/24baf01e-8ad5-4d52-bf13-fe41cd483e5b"; } + ]; + + # Enables DHCP on each ethernet and wireless interface. In case of scripted networking + # (the default) this is the recommended approach. When using systemd-networkd it's + # still possible to use this option, but it's recommended to use it in conjunction + # with explicit per-interface declarations with `networking.interfaces..useDHCP`. + networking.useDHCP = lib.mkDefault true; + # networking.interfaces.enp0s20f0u2.useDHCP = lib.mkDefault true; + # networking.interfaces.wlp58s0.useDHCP = lib.mkDefault true; + + nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux"; + hardware.cpu.intel.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware; +} diff --git a/nixos/flake.nix b/nixos/flake.nix new file mode 100644 index 00000000..81d658b3 --- /dev/null +++ b/nixos/flake.nix @@ -0,0 +1,36 @@ +{ + description = "Simple NixOS Flake"; + + inputs = { + # Nixpkgs + nixpkgs.url = "github:nixos/nixpkgs/nixos-24.05"; + #nixpgs.url = "github:nixos/nixpkgs/nixos-unstable"; + # Home manager + home-manager.url = "github:nix-community/home-manager/release-24.05"; + home-manager.inputs.nixpkgs.follows = "nixpkgs"; + }; + + outputs = { + self, + nixpkgs, + home-manager, + ... + } @ inputs: let + inherit (self) outputs; + in { + nixosConfigurations = { + joey-laptop = nixpkgs.lib.nixosSystem { + specialArgs = {inherit inputs outputs;}; + modules = [./nixos/configuration.nix]; + }; + }; + + homeConfigurations = { + "joey@joey-laptop" = home-manager.lib.homeManagerConfiguration { + pkgs = nixpkgs.legacyPackages.x86_64-linux; # Home-manager requires 'pkgs' instance + extraSpecialArgs = {inherit inputs outputs;}; + modules = [./home-manager/home.nix]; + }; + }; + }; +} diff --git a/nixos/home-manager/home.nix b/nixos/home-manager/home.nix new file mode 100644 index 00000000..af429848 --- /dev/null +++ b/nixos/home-manager/home.nix @@ -0,0 +1,33 @@ +{ + inputs, + lib, + config, + pkgs, + ... +}: { + imports = [ + ]; + + nixpkgs = { + overlays = [ + ]; + config = { + allowUnfree = true; + allowUnfreePredicate = _: true; + }; + }; + + home = { + username = "joey"; + homeDirectory = "/home/joey"; + }; + + + programs.home-manager.enable = true; + programs.git.enable = true; + + systemd.user.startServices = "sd-switch"; + + home.stateVersion = "24.05"; +} + diff --git a/nixos/hosts/xps13_9350/configuration.nix b/nixos/hosts/xps13_9350/configuration.nix index 63fbeb08..5fc0e600 100644 --- a/nixos/hosts/xps13_9350/configuration.nix +++ b/nixos/hosts/xps13_9350/configuration.nix @@ -1,11 +1,10 @@ -{ config, pkgs, ... }: +{ config, pkgs, inputs, ... }: { imports = [ ./hardware-configuration.nix ]; - environment.etc."current-system-packages".text = let packages = builtins.map (p: "${ p.name }") config.environment.systemPackages; @@ -54,11 +53,10 @@ LC_TIME = "en_US.UTF-8"; }; + services.displayManager.sddm.enable = true; + services.desktopManager.plasma6.enable = true; + services.xserver.enable = true; - - #services.displayManager.sddm.enable = true; - #services.desktopManager.plasma6.enable = true; - services.xserver.xkb = { layout = "us"; variant = ""; @@ -83,19 +81,22 @@ ]; }; - services.displayManager.autoLogin.enable = true; - services.displayManager.autoLogin.user = "joey"; - systemd.services."getty@tty1".enable = false; systemd.services."autovt@tty1".enable = false; - programs.firefox.enable = true; - programs.hyprland.enable = true; - programs.hyprland.package = inputs.hyprland.packages."${pkgs.system}".hyprland; nixpkgs.config.allowUnfree = true; environment.systemPackages = with pkgs; [ + vim git + waybar mako libnotify swww kitty rofi-wayland polkit-kde-agent wl-clipboard ]; + + #programs.hyprland.enable = true; + #programs.hyprland.xwayland.enable = true; + #programs.hyprland.package = inputs.hyprland.packages."${pkgs.system}".hyprland; + xdg.portal.enable = true; + xdg.portal.extraPortals = with pkgs; [ xdg-desktop-portal-gtk ]; + xdg.portal.config.common.default = "*"; system.stateVersion = "24.05"; -} \ No newline at end of file +} diff --git a/nixos/hosts/xps13_9350/flake.lock b/nixos/hosts/xps13_9350/flake.lock index 162ea9e7..c824b5cc 100644 --- a/nixos/hosts/xps13_9350/flake.lock +++ b/nixos/hosts/xps13_9350/flake.lock @@ -1,5 +1,38 @@ { "nodes": { + "aquamarine": { + "inputs": { + "hyprutils": [ + "hyprland", + "hyprutils" + ], + "hyprwayland-scanner": [ + "hyprland", + "hyprwayland-scanner" + ], + "nixpkgs": [ + "hyprland", + "nixpkgs" + ], + "systems": [ + "hyprland", + "systems" + ] + }, + "locked": { + "lastModified": 1725753098, + "narHash": "sha256-/NO/h/qD/eJXAQr/fHA4mdDgYsNT9thHQ+oT6KPi2ac=", + "owner": "hyprwm", + "repo": "aquamarine", + "rev": "e4a13203112a036fc7f437d391c7810f3dd5ab52", + "type": "github" + }, + "original": { + "owner": "hyprwm", + "repo": "aquamarine", + "type": "github" + } + }, "home-manager": { "inputs": { "nixpkgs": [ @@ -21,18 +54,194 @@ "type": "github" } }, + "hyprcursor": { + "inputs": { + "hyprlang": [ + "hyprland", + "hyprlang" + ], + "nixpkgs": [ + "hyprland", + "nixpkgs" + ], + "systems": [ + "hyprland", + "systems" + ] + }, + "locked": { + "lastModified": 1722623071, + "narHash": "sha256-sLADpVgebpCBFXkA1FlCXtvEPu1tdEsTfqK1hfeHySE=", + "owner": "hyprwm", + "repo": "hyprcursor", + "rev": "912d56025f03d41b1ad29510c423757b4379eb1c", + "type": "github" + }, + "original": { + "owner": "hyprwm", + "repo": "hyprcursor", + "type": "github" + } + }, + "hyprland": { + "inputs": { + "aquamarine": "aquamarine", + "hyprcursor": "hyprcursor", + "hyprlang": "hyprlang", + "hyprutils": "hyprutils", + "hyprwayland-scanner": "hyprwayland-scanner", + "nixpkgs": "nixpkgs", + "systems": "systems", + "xdph": "xdph" + }, + "locked": { + "lastModified": 1726159284, + "narHash": "sha256-qgGagu7z+lCytkdCwS9ahskqdlqXrTi7AauWxabO+0A=", + "owner": "hyprwm", + "repo": "Hyprland", + "rev": "118be4dea048df88fd21b84580fe62950c868c8f", + "type": "github" + }, + "original": { + "owner": "hyprwm", + "repo": "Hyprland", + "type": "github" + } + }, + "hyprland-protocols": { + "inputs": { + "nixpkgs": [ + "hyprland", + "xdph", + "nixpkgs" + ], + "systems": [ + "hyprland", + "xdph", + "systems" + ] + }, + "locked": { + "lastModified": 1721326555, + "narHash": "sha256-zCu4R0CSHEactW9JqYki26gy8h9f6rHmSwj4XJmlHgg=", + "owner": "hyprwm", + "repo": "hyprland-protocols", + "rev": "5a11232266bf1a1f5952d5b179c3f4b2facaaa84", + "type": "github" + }, + "original": { + "owner": "hyprwm", + "repo": "hyprland-protocols", + "type": "github" + } + }, + "hyprlang": { + "inputs": { + "hyprutils": [ + "hyprland", + "hyprutils" + ], + "nixpkgs": [ + "hyprland", + "nixpkgs" + ], + "systems": [ + "hyprland", + "systems" + ] + }, + "locked": { + "lastModified": 1725997860, + "narHash": "sha256-d/rZ/fHR5l1n7PeyLw0StWMNLXVU9c4HFyfskw568so=", + "owner": "hyprwm", + "repo": "hyprlang", + "rev": "dfeb5811dd6485490cce18d6cc1e38a055eea876", + "type": "github" + }, + "original": { + "owner": "hyprwm", + "repo": "hyprlang", + "type": "github" + } + }, + "hyprutils": { + "inputs": { + "nixpkgs": [ + "hyprland", + "nixpkgs" + ], + "systems": [ + "hyprland", + "systems" + ] + }, + "locked": { + "lastModified": 1724966483, + "narHash": "sha256-WXDgKIbzjYKczxSZOsJplCS1i1yrTUpsDPuJV/xpYLo=", + "owner": "hyprwm", + "repo": "hyprutils", + "rev": "8976e3f6a5357da953a09511d0c7f6a890fb6ec2", + "type": "github" + }, + "original": { + "owner": "hyprwm", + "repo": "hyprutils", + "type": "github" + } + }, + "hyprwayland-scanner": { + "inputs": { + "nixpkgs": [ + "hyprland", + "nixpkgs" + ], + "systems": [ + "hyprland", + "systems" + ] + }, + "locked": { + "lastModified": 1721324119, + "narHash": "sha256-SOOqIT27/X792+vsLSeFdrNTF+OSRp5qXv6Te+fb2Qg=", + "owner": "hyprwm", + "repo": "hyprwayland-scanner", + "rev": "a048a6cb015340bd82f97c1f40a4b595ca85cc30", + "type": "github" + }, + "original": { + "owner": "hyprwm", + "repo": "hyprwayland-scanner", + "type": "github" + } + }, "nixpkgs": { "locked": { - "lastModified": 1725826545, - "narHash": "sha256-L64N1rpLlXdc94H+F6scnrbuEu+utC03cDDVvvJGOME=", + "lastModified": 1725983898, + "narHash": "sha256-4b3A9zPpxAxLnkF9MawJNHDtOOl6ruL0r6Og1TEDGCE=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "f4c846aee8e1e29062aa8514d5e0ab270f4ec2f9", + "rev": "1355a0cbfeac61d785b7183c0caaec1f97361b43", "type": "github" }, "original": { "owner": "NixOS", - "ref": "nixos-24.05", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_2": { + "locked": { + "lastModified": 1725983898, + "narHash": "sha256-4b3A9zPpxAxLnkF9MawJNHDtOOl6ruL0r6Og1TEDGCE=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "1355a0cbfeac61d785b7183c0caaec1f97361b43", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-unstable", "repo": "nixpkgs", "type": "github" } @@ -40,7 +249,53 @@ "root": { "inputs": { "home-manager": "home-manager", - "nixpkgs": "nixpkgs" + "hyprland": "hyprland", + "nixpkgs": "nixpkgs_2" + } + }, + "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" + } + }, + "xdph": { + "inputs": { + "hyprland-protocols": "hyprland-protocols", + "hyprlang": [ + "hyprland", + "hyprlang" + ], + "nixpkgs": [ + "hyprland", + "nixpkgs" + ], + "systems": [ + "hyprland", + "systems" + ] + }, + "locked": { + "lastModified": 1726046979, + "narHash": "sha256-6SEsjurq9cdTkITA6d49ncAJe4O/8CgRG5/F//s6Xh8=", + "owner": "hyprwm", + "repo": "xdg-desktop-portal-hyprland", + "rev": "e695669fd8e1d1be9eaae40f35e00f8bd8b64c18", + "type": "github" + }, + "original": { + "owner": "hyprwm", + "repo": "xdg-desktop-portal-hyprland", + "type": "github" } } }, diff --git a/nixos/hosts/xps13_9350/flake.nix b/nixos/hosts/xps13_9350/flake.nix index 40af24ba..ba8b6cf2 100644 --- a/nixos/hosts/xps13_9350/flake.nix +++ b/nixos/hosts/xps13_9350/flake.nix @@ -1,12 +1,13 @@ { description = "joey@joey-laptop"; inputs = { - nixpkgs.url = "github:NixOS/nixpkgs/nixos-24.05"; + #nixpkgs.url = "github:NixOS/nixpkgs/nixos-24.05"; + nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable"; hyprland.url = "github:hyprwm/Hyprland"; home-manager.url = "github:nix-community/home-manager/release-24.05"; home-manager.inputs.nixpkgs.follows = "nixpkgs"; }; - outputs = { self, nixpkgs, home-manager, ... }@inputs: + outputs = { self, nixpkgs, home-manager, hyprland, ... }@inputs: let lib = nixpkgs.lib; system = "x86_64-linux"; @@ -19,6 +20,7 @@ modules = [ ./configuration.nix inputs.home-manager.nixosModules.default + inputs.hyprland.nixosModules.default ]; }; }; @@ -29,4 +31,4 @@ }; }; }; -} \ No newline at end of file +} diff --git a/nixos/hosts/xps13_9350/home.nix b/nixos/hosts/xps13_9350/home.nix index 925a3d64..dc46973a 100644 --- a/nixos/hosts/xps13_9350/home.nix +++ b/nixos/hosts/xps13_9350/home.nix @@ -11,7 +11,7 @@ home.sessionVariables = {}; # Programs - + programs.kitty.enable = true; wayland.windowManager.hyprland = { enable = true; settings = { @@ -39,50 +39,6 @@ dotDir = ".config/zsh"; enableCompletion = true; autosuggestion.enable = true; - autosuggestion.strategy = [ "history" ]; - initExtra = '' - bindkey -e - bindkey '^[[1;5D' backward-word - bindkey '^[[1;5C' forward-word - ''; - plugins = [ - { - name = "zsh-autosuggestions"; - src = pkgs.fetchFromGitHub { - owner = "zsh-users"; - repo = "zsh-autosuggestions"; - rev = "v0.7.0"; - sha256 = lib.fakeSha256; - }; - } - { - name = "zsh-completions"; - src = pkgs.fetchFromGitHub { - owner = "zsh-users"; - repo = "zsh-completions"; - rev = "v0.35.0"; - sha256 = lib.fakeSha256; - }; - } - { - name = "zsh-syntax-highlighting"; - src = pkgs.fetchFromGitHub { - owner = "zsh-users"; - repo = "zsh-syntax-highlighting"; - rev = "v0.8.0"; - sha256 = lib.fakeSha256; - }; - } - { - name = "zsh-shift-select"; - src = pkgs.fetchFromGitHub { - owner = "jirutka"; - repo = "zsh-shift-select"; - rev = "v0.1.1"; - sha256 = lib.fakeSha256; - }; - } - ]; }; programs.home-manager = { diff --git a/nixos/nixos/configuration.nix b/nixos/nixos/configuration.nix new file mode 100644 index 00000000..cf1302cf --- /dev/null +++ b/nixos/nixos/configuration.nix @@ -0,0 +1,66 @@ +{ + inputs, + lib, + config, + pkgs, + ... +}: { + imports = [ + ./hardware-configuration.nix + ]; + + nixpkgs = { + overlays = []; + config = { + allowUnfree = true; + }; + }; + + nix = let + flakeInputs = lib.filterAttrs (_: lib.isType "flake") inputs; + in { + settings = { + experimental-features = "nix-command flakes"; + flake-registry = ""; + nix-path = config.nix.nixPath; + }; + channel.enable = false; + + registry = lib.mapAttrs (_: flake: {inherit flake;}) flakeInputs; + nixPath = lib.mapAttrsToList (n: _: "${n}=flake:${n}") flakeInputs; + }; + + + networking.hostName = "joey-laptop"; + + users.users = { + joey = { + isNormalUser = true; + openssh.authorizedKeys.keys = [ + ]; + extraGroups = ["wheel"]; + }; + }; + + security.sudo = { + enable = true; + extraRules = [{ + commands = [{ + command = "ALL"; + options = [ "NOPASSWD" ]; + }]; + groups = [ "wheel" ]; + }]; + }; + + services.openssh = { + enable = true; + settings = { + PermitRootLogin = "no"; + PasswordAuthentication = false; + KbdInteractiveAuthentication = false; + }; + }; + + system.stateVersion = "24.05"; +} diff --git a/nixos/nixos/hardware-configuration.nix b/nixos/nixos/hardware-configuration.nix new file mode 100644 index 00000000..a0705eae --- /dev/null +++ b/nixos/nixos/hardware-configuration.nix @@ -0,0 +1,42 @@ +# Do not modify this file! It was generated by ‘nixos-generate-config’ +# and may be overwritten by future invocations. Please make changes +# to /etc/nixos/configuration.nix instead. +{ config, lib, pkgs, modulesPath, ... }: + +{ + imports = + [ (modulesPath + "/hardware/network/broadcom-43xx.nix") + (modulesPath + "/installer/scan/not-detected.nix") + ]; + + boot.initrd.availableKernelModules = [ "xhci_pci" "ahci" "nvme" "usb_storage" "sd_mod" "rtsx_pci_sdmmc" ]; + boot.initrd.kernelModules = [ ]; + boot.kernelModules = [ "kvm-intel" ]; + boot.extraModulePackages = [ ]; + + fileSystems."/" = + { device = "/dev/disk/by-uuid/67cfde6b-b037-4605-886d-062ec5b8cd46"; + fsType = "ext4"; + }; + + fileSystems."/boot" = + { device = "/dev/disk/by-uuid/EE88-0D1C"; + fsType = "vfat"; + options = [ "fmask=0077" "dmask=0077" ]; + }; + + swapDevices = + [ { device = "/dev/disk/by-uuid/24baf01e-8ad5-4d52-bf13-fe41cd483e5b"; } + ]; + + # Enables DHCP on each ethernet and wireless interface. In case of scripted networking + # (the default) this is the recommended approach. When using systemd-networkd it's + # still possible to use this option, but it's recommended to use it in conjunction + # with explicit per-interface declarations with `networking.interfaces..useDHCP`. + networking.useDHCP = lib.mkDefault true; + # networking.interfaces.enp0s20f0u2.useDHCP = lib.mkDefault true; + # networking.interfaces.wlp58s0.useDHCP = lib.mkDefault true; + + nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux"; + hardware.cpu.intel.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware; +} diff --git a/nixos/users/joey/git.nix b/nixos/users/joey/git.nix new file mode 100644 index 00000000..8b137891 --- /dev/null +++ b/nixos/users/joey/git.nix @@ -0,0 +1 @@ + diff --git a/nixos/users/joey/joey.nix b/nixos/users/joey/joey.nix new file mode 100644 index 00000000..85a4f064 --- /dev/null +++ b/nixos/users/joey/joey.nix @@ -0,0 +1,89 @@ +{ config, pkgs, ... }: + +{ + home.username = "joey"; + home.homeDirectory = "/home/joey"; + home.stateVersion = "24.05"; + home.file = {}; + home.sessionVariables = { MYVAR = "joey"; }; + + # Programs + + wayland.windowManager.hyprland = { + enable = true; + settings = { + decoration = { + shadow_offset = "0 5"; + "col.shadow" = "rgba(00000099)"; + }; + "$mod" = "SUPER"; + bindm = [ + "$mod, mouse:272, movewindow" + "$mod, mouse:273, resizewindow" + "$mod, ALT, mouse:272, resizewindow" + ]; + }; + }; + + programs.git = { + enable = true; + userName = "Joey Hafner"; + userEmail = "joey@jafner.net"; + }; + + programs.zsh = { + enable = true; + dotDir = ".config/zsh"; + enableCompletion = true; + autosuggestion.enable = true; + autosuggestion.strategy = [ "history" ]; + initExtra = '' + bindkey -e + bindkey '^[[1;5D' backward-word + bindkey '^[[1;5C' forward-word + ''; + plugins = [ + { + name = "zsh-autosuggestions"; + src = pkgs.fetchFromGitHub { + owner = "zsh-users"; + repo = "zsh-autosuggestions"; + rev = "v0.7.0"; + sha256 = lib.fakeSha256; + }; + } + { + name = "zsh-completions"; + src = pkgs.fetchFromGitHub { + owner = "zsh-users"; + repo = "zsh-completions"; + rev = "v0.35.0"; + sha256 = lib.fakeSha256; + }; + } + { + name = "zsh-syntax-highlighting"; + src = pkgs.fetchFromGitHub { + owner = "zsh-users"; + repo = "zsh-syntax-highlighting"; + rev = "v0.8.0"; + sha256 = lib.fakeSha256; + }; + } + { + name = "zsh-shift-select"; + src = pkgs.fetchFromGitHub { + owner = "jirutka"; + repo = "zsh-shift-select"; + rev = "v0.1.1"; + sha256 = lib.fakeSha256; + }; + } + ]; + }; + + programs.home-manager = { + enable = true; + }; + +} diff --git a/nixos/users/joey/sh.nix b/nixos/users/joey/sh.nix new file mode 100644 index 00000000..78b87a4d --- /dev/null +++ b/nixos/users/joey/sh.nix @@ -0,0 +1,31 @@ +{ pkgs, ... }: + +{ + programs.zsh = { + enable = true; + enableAutosuggestions = true; + syntaxHighlighting.enable = true; + enableCompletion = true; + initExtra = '' + PROMPT=" ◉ %U%F{magenta}%n%f%u@%U%F{blue}%m%f%u:%F{yellow}%~%f + %F{green}→%f " + RPROMPT="%F{red}▂%f%F{yellow}▄%f%F{green}▆%f%F{cyan}█%f%F{blue}▆%f%F{magenta}▄%f%F{white}▂%f" + [ $TERM = "dumb" ] && unsetopt zle && PS1='$ ' + ''; + }; + + programs.bash = { + enable = true; + enableCompletion = true; + }; + + home.packages = with pkgs; [ + fastfetch + ]; + + programs.direnv = { + enable = true; + enableZshIntegration = true; + nix-direnv.enable = true; + }; +}