commit 68f969ec5992f725622e7a47b0f45c70580dd848 Author: Emile Clark-Boman Date: Wed Oct 30 13:51:36 2024 +1000 da first commit diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..e69de29 diff --git a/README b/README new file mode 100644 index 0000000..0068d79 --- /dev/null +++ b/README @@ -0,0 +1,19 @@ +### Philosophy +I try to use Home Manager as little as possible. When I first started with NixOS I found +it distracting and confusing. NixOS already handles system wide and user packages, so having +another user level package management method was baffling. Obviously I understand now how +it can be useful (so I do use it). But where possible I will instead use the functionality +of Nix rather than Home Manager. + + +### TODO +There are a lot of `TODO` items in this repository. To improve these dotfiles +I should run a command to find files containing "TODO" and then implement the +recommendation I left behind :) + + + + +### Credits +1. https://github.com/XNM1/linux-nixos-hyprland-config-dotfiles +The simplicity of their layout is amazing, was really good to pick out small modules and learn how something works / is configured. diff --git a/deploy.sh b/deploy.sh new file mode 100755 index 0000000..6fe9c3f --- /dev/null +++ b/deploy.sh @@ -0,0 +1 @@ +sudo nixos-rebuild switch --flake ./ diff --git a/flake.lock b/flake.lock new file mode 100644 index 0000000..c2e5529 --- /dev/null +++ b/flake.lock @@ -0,0 +1,392 @@ +{ + "nodes": { + "aquamarine": { + "inputs": { + "hyprutils": [ + "hyprland", + "hyprutils" + ], + "hyprwayland-scanner": [ + "hyprland", + "hyprwayland-scanner" + ], + "nixpkgs": [ + "hyprland", + "nixpkgs" + ], + "systems": [ + "hyprland", + "systems" + ] + }, + "locked": { + "lastModified": 1729527199, + "narHash": "sha256-D5/YksfRga8Akd04ZtIkuYSIOjXVrAzQIQBSeplokzU=", + "owner": "hyprwm", + "repo": "aquamarine", + "rev": "8d732fa8aff8b12ef2b1e2f00fc8153e41312b72", + "type": "github" + }, + "original": { + "owner": "hyprwm", + "repo": "aquamarine", + "type": "github" + } + }, + "flake-compat": { + "flake": false, + "locked": { + "lastModified": 1696426674, + "narHash": "sha256-kvjfFW7WAETZlt09AgDn1MrtKzP7t90Vf7vypd3OL1U=", + "owner": "edolstra", + "repo": "flake-compat", + "rev": "0f9255e01c2351cc7d116c072cb317785dd33b33", + "type": "github" + }, + "original": { + "owner": "edolstra", + "repo": "flake-compat", + "type": "github" + } + }, + "gitignore": { + "inputs": { + "nixpkgs": [ + "hyprland", + "pre-commit-hooks", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1709087332, + "narHash": "sha256-HG2cCnktfHsKV0s4XW83gU3F57gaTljL9KNSuG6bnQs=", + "owner": "hercules-ci", + "repo": "gitignore.nix", + "rev": "637db329424fd7e46cf4185293b9cc8c88c95394", + "type": "github" + }, + "original": { + "owner": "hercules-ci", + "repo": "gitignore.nix", + "type": "github" + } + }, + "home-manager": { + "inputs": { + "nixpkgs": [ + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1729551526, + "narHash": "sha256-7LAGY32Xl14OVQp3y6M43/0AtHYYvV6pdyBcp3eoz0s=", + "owner": "nix-community", + "repo": "home-manager", + "rev": "5ec753a1fc4454df9285d8b3ec0809234defb975", + "type": "github" + }, + "original": { + "owner": "nix-community", + "repo": "home-manager", + "type": "github" + } + }, + "hyprcursor": { + "inputs": { + "hyprlang": [ + "hyprland", + "hyprlang" + ], + "nixpkgs": [ + "hyprland", + "nixpkgs" + ], + "systems": [ + "hyprland", + "systems" + ] + }, + "locked": { + "lastModified": 1728669738, + "narHash": "sha256-EDNAU9AYcx8OupUzbTbWE1d3HYdeG0wO6Msg3iL1muk=", + "owner": "hyprwm", + "repo": "hyprcursor", + "rev": "0264e698149fcb857a66a53018157b41f8d97bb0", + "type": "github" + }, + "original": { + "owner": "hyprwm", + "repo": "hyprcursor", + "type": "github" + } + }, + "hyprland": { + "inputs": { + "aquamarine": "aquamarine", + "hyprcursor": "hyprcursor", + "hyprland-protocols": "hyprland-protocols", + "hyprlang": "hyprlang", + "hyprutils": "hyprutils", + "hyprwayland-scanner": "hyprwayland-scanner", + "nixpkgs": "nixpkgs", + "pre-commit-hooks": "pre-commit-hooks", + "systems": "systems", + "xdph": "xdph" + }, + "locked": { + "lastModified": 1729657195, + "narHash": "sha256-YGk7oeyyfvZs4d8qAyMBPg2J/euYK48hPiI6PLKEa30=", + "owner": "hyprwm", + "repo": "Hyprland", + "rev": "6e0aadc585c6d9fdaaebfa5853adbf9610897c82", + "type": "github" + }, + "original": { + "owner": "hyprwm", + "repo": "Hyprland", + "type": "github" + } + }, + "hyprland-protocols": { + "inputs": { + "nixpkgs": [ + "hyprland", + "nixpkgs" + ], + "systems": [ + "hyprland", + "systems" + ] + }, + "locked": { + "lastModified": 1728345020, + "narHash": "sha256-xGbkc7U/Roe0/Cv3iKlzijIaFBNguasI31ynL2IlEoM=", + "owner": "hyprwm", + "repo": "hyprland-protocols", + "rev": "a7c183800e74f337753de186522b9017a07a8cee", + "type": "github" + }, + "original": { + "owner": "hyprwm", + "repo": "hyprland-protocols", + "type": "github" + } + }, + "hyprlang": { + "inputs": { + "hyprutils": [ + "hyprland", + "hyprutils" + ], + "nixpkgs": [ + "hyprland", + "nixpkgs" + ], + "systems": [ + "hyprland", + "systems" + ] + }, + "locked": { + "lastModified": 1728168612, + "narHash": "sha256-AnB1KfiXINmuiW7BALYrKqcjCnsLZPifhb/7BsfPbns=", + "owner": "hyprwm", + "repo": "hyprlang", + "rev": "f054f2e44d6a0b74607a6bc0f52dba337a3db38e", + "type": "github" + }, + "original": { + "owner": "hyprwm", + "repo": "hyprlang", + "type": "github" + } + }, + "hyprutils": { + "inputs": { + "nixpkgs": [ + "hyprland", + "nixpkgs" + ], + "systems": [ + "hyprland", + "systems" + ] + }, + "locked": { + "lastModified": 1728941256, + "narHash": "sha256-WRypmcZ2Bw94lLmcmxYokVOHPJSZ7T06V49QZ4tkZeQ=", + "owner": "hyprwm", + "repo": "hyprutils", + "rev": "fd4be8b9ca932f7384e454bcd923c5451ef2aa85", + "type": "github" + }, + "original": { + "owner": "hyprwm", + "repo": "hyprutils", + "type": "github" + } + }, + "hyprwayland-scanner": { + "inputs": { + "nixpkgs": [ + "hyprland", + "nixpkgs" + ], + "systems": [ + "hyprland", + "systems" + ] + }, + "locked": { + "lastModified": 1726874836, + "narHash": "sha256-VKR0sf0PSNCB0wPHVKSAn41mCNVCnegWmgkrneKDhHM=", + "owner": "hyprwm", + "repo": "hyprwayland-scanner", + "rev": "500c81a9e1a76760371049a8d99e008ea77aa59e", + "type": "github" + }, + "original": { + "owner": "hyprwm", + "repo": "hyprwayland-scanner", + "type": "github" + } + }, + "nixpkgs": { + "locked": { + "lastModified": 1729413321, + "narHash": "sha256-I4tuhRpZFa6Fu6dcH9Dlo5LlH17peT79vx1y1SpeKt0=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "1997e4aa514312c1af7e2bda7fad1644e778ff26", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-stable": { + "locked": { + "lastModified": 1720386169, + "narHash": "sha256-NGKVY4PjzwAa4upkGtAMz1npHGoRzWotlSnVlqI40mo=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "194846768975b7ad2c4988bdb82572c00222c0d7", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-24.05", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_2": { + "locked": { + "lastModified": 1729413321, + "narHash": "sha256-I4tuhRpZFa6Fu6dcH9Dlo5LlH17peT79vx1y1SpeKt0=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "1997e4aa514312c1af7e2bda7fad1644e778ff26", + "type": "github" + }, + "original": { + "owner": "nixos", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "pre-commit-hooks": { + "inputs": { + "flake-compat": "flake-compat", + "gitignore": "gitignore", + "nixpkgs": [ + "hyprland", + "nixpkgs" + ], + "nixpkgs-stable": "nixpkgs-stable" + }, + "locked": { + "lastModified": 1729104314, + "narHash": "sha256-pZRZsq5oCdJt3upZIU4aslS9XwFJ+/nVtALHIciX/BI=", + "owner": "cachix", + "repo": "git-hooks.nix", + "rev": "3c3e88f0f544d6bb54329832616af7eb971b6be6", + "type": "github" + }, + "original": { + "owner": "cachix", + "repo": "git-hooks.nix", + "type": "github" + } + }, + "root": { + "inputs": { + "home-manager": "home-manager", + "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", + "hyprland-protocols" + ], + "hyprlang": [ + "hyprland", + "hyprlang" + ], + "hyprutils": [ + "hyprland", + "hyprutils" + ], + "hyprwayland-scanner": [ + "hyprland", + "hyprwayland-scanner" + ], + "nixpkgs": [ + "hyprland", + "nixpkgs" + ], + "systems": [ + "hyprland", + "systems" + ] + }, + "locked": { + "lastModified": 1728166987, + "narHash": "sha256-w6dVTguAn9zJ+7aPOhBQgDz8bn6YZ7b56cY8Kg5HJRI=", + "owner": "hyprwm", + "repo": "xdg-desktop-portal-hyprland", + "rev": "fb9c8d665af0588bb087f97d0f673ddf0d501787", + "type": "github" + }, + "original": { + "owner": "hyprwm", + "repo": "xdg-desktop-portal-hyprland", + "type": "github" + } + } + }, + "root": "root", + "version": 7 +} diff --git a/flake.nix b/flake.nix new file mode 100644 index 0000000..b308364 --- /dev/null +++ b/flake.nix @@ -0,0 +1,70 @@ +{ + description = "Emile's Nix Dotfiles"; + + inputs = { + nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable"; + + home-manager = { + url = "github:nix-community/home-manager"; + inputs.nixpkgs.follows = "nixpkgs"; + }; + + hyprland.url = "github:hyprwm/Hyprland"; + }; + + outputs = { + self, + nixpkgs, + home-manager, + hyprland, + ... + }@inputs: + let + system = "x86_64-linux"; + #system = pkgs.stdenv.hostPlatform.system; + + pkgs = import nixpkgs { + inherit system; + + #config = { + # allowUnfree = true; + #}; + }; + + # this is just something I'm experimenting with + PROJECT_ROOT = builtins.toString ./.; + + in { + nixosConfigurations = { + # i be on my puter fr + myputer = nixpkgs.lib.nixosSystem { + modules = [ + ./hosts/myputer + ]; + specialArgs = { + inherit inputs system; # inherit inputs outputs; + }; + }; + + # my laptop 0w0 + #lolcathost = nixpkgs.lib.nixosSystem { + # modules = [ + # ./hosts/lolcathost + # ]; + # specialArgs = { + # inherit system; # inherit inputs outputs; + # }; + #}; + }; + + homeConfigurations = { + me = home-manager.lib.homeManagerConfiguration { + inherit pkgs; + + modules = [ + ./home/emile # ./home/me + ]; + }; + }; + }; +} diff --git a/homes/me/default.nix b/homes/me/default.nix new file mode 100644 index 0000000..e69de29 diff --git a/hosts/lolcathost/default.nix b/hosts/lolcathost/default.nix new file mode 100644 index 0000000..93ee8e1 --- /dev/null +++ b/hosts/lolcathost/default.nix @@ -0,0 +1,112 @@ +{ + pkgs, + inputs, + ... +}: { + imports = [ + ./hardware-configuration.nix + ]; + + # Use the systemd-boot EFI boot loader. + # TODO: use GRUB2 instead + boot.loader.systemd-boot.enable = true; + boot.loader.efi.canTouchEfiVariables = true; + #boot.loader = { + # efi = { + # canTouchEfiVariables = true; + # efiSysMountPoint = "/boot/efi"; + # }; + # grub = { + # efiSupport = true; + # #efiInstallAsRemovable = true; # in case canTouchEfiVariables doesn't work on this system + # device = "nodev"; + # }; + #}; + + networking.hostName = "myputer"; + # Pick only one of the below networking options. + # networking.wireless.enable = true; # Enables wireless support via wpa_supplicant. + networking.networkmanager.enable = true; # Easiest to use and most distros use this by default. + + # Set your time zone. + time.timeZone = "Australia/Brisbane"; + + # Select internationalisation properties. + i18n.defaultLocale = "en_US.UTF-8"; + console = { + font = "Lat2-Terminus16"; + keyMap = "us"; + #useXkbConfig = true; # use xkb.options in tty. + }; + + # Enable sound. + #services.pipewire = { + # enable = true; + # pulse.enable = true; + #}; + + # Enable touchpad support (enabled default in most desktopManager). + # services.libinput.enable = true; + + # Define a user account. Don't forget to set a password with ‘passwd’. + users.users.emile = { + isNormalUser = true; + extraGroups = [ "wheel" ]; # Enable ‘sudo’ for the user. + packages = with pkgs; [ + #firefox + tree + ]; + }; + + # List packages installed in system profile. To search, run: + # $ nix search wget + environment.systemPackages = with pkgs; [ + vim + wget + ]; + + # Some programs need SUID wrappers, can be configured further or are + # started in user sessions. + # programs.mtr.enable = true; + # programs.gnupg.agent = { + # enable = true; + # enableSSHSupport = true; + # }; + + # List services that you want to enable: + + # Enable the OpenSSH daemon. + # services.openssh.enable = true; + + # Open ports in the firewall. + # networking.firewall.allowedTCPPorts = [ ... ]; + # networking.firewall.allowedUDPPorts = [ ... ]; + # Or disable the firewall altogether. + # networking.firewall.enable = false; + + # Copy the NixOS configuration file and link it from the resulting system + # (/run/current-system/configuration.nix). This is useful in case you + # accidentally delete configuration.nix. + # system.copySystemConfiguration = true; + + # This option defines the first version of NixOS you have installed on this particular machine, + # and is used to maintain compatibility with application data (e.g. databases) created on older NixOS versions. + # + # Most users should NEVER change this value after the initial install, for any reason, + # even if you've upgraded your system to a new NixOS release. + # + # This value does NOT affect the Nixpkgs version your packages and OS are pulled from, + # so changing it will NOT upgrade your system - see https://nixos.org/manual/nixos/stable/#sec-upgrading for how + # to actually do that. + # + # This value being lower than the current NixOS release does NOT mean your system is + # out of date, out of support, or vulnerable. + # + # Do NOT change this value unless you have manually inspected all the changes it would make to your configuration, + # and migrated your data accordingly. + # + # For more information, see `man configuration.nix` or https://nixos.org/manual/nixos/stable/options#opt-system.stateVersion . + system.stateVersion = "24.05"; # Did you read the comment? + +} + diff --git a/hosts/lolcathost/hardware-configuration.nix b/hosts/lolcathost/hardware-configuration.nix new file mode 100644 index 0000000..9892c37 --- /dev/null +++ b/hosts/lolcathost/hardware-configuration.nix @@ -0,0 +1 @@ +# TODO: (i haven't put NixOS on lolcathost yet) diff --git a/hosts/myputer/default.nix b/hosts/myputer/default.nix new file mode 100644 index 0000000..6475c09 --- /dev/null +++ b/hosts/myputer/default.nix @@ -0,0 +1,147 @@ +{ + pkgs, + inputs, + ... +}: { + imports = [ + ./hardware-configuration.nix + ]; + + # Use the systemd-boot EFI boot loader. + # TODO: use GRUB2 instead + boot.loader.systemd-boot.enable = true; + boot.loader.efi.canTouchEfiVariables = true; + #boot.loader = { + # efi = { + # canTouchEfiVariables = true; + # efiSysMountPoint = "/boot/efi"; + # }; + # grub = { + # efiSupport = true; + # #efiInstallAsRemovable = true; # in case canTouchEfiVariables doesn't work on this system + # device = "nodev"; + # }; + #}; + + # Set your time zone. + time.timeZone = "Australia/Brisbane"; + + # Select internationalisation properties. + i18n.defaultLocale = "en_US.UTF-8"; + console = { + font = "Lat2-Terminus16"; + keyMap = "us"; + #useXkbConfig = true; # use xkb.options in tty. + }; + + + # ----- NETWORKING SECTION ----- + networking.hostName = "myputer"; + # Pick only one of the below networking options. + # networking.wireless.enable = true; # Enables wireless support via wpa_supplicant. + networking.networkmanager.enable = true; # Easiest to use and most distros use this by default. + + # Open ports in the firewall. + # networking.firewall.allowedTCPPorts = [ ... ]; + # networking.firewall.allowedUDPPorts = [ ... ]; + # Or disable the firewall altogether. + networking.firewall.enable = true; + + + # ----- SERVICES ----- + services = { + # Set display manager (login screen) + displayManager = { + sddm = { + enable = true; + theme = "${import ./sddm-theme.nix { inherit pkgs; }}"; + # enable experimental sddm support for wayland + wayland.enable = true; + }; + defaultSession = "hyprland"; + }; + + # Enable sound + # TODO: use the modules/core/pipewire.nix module instead :) + pipewire = { + enable = true; + pulse.enable = true; + }; + }; + + users.users = { + # just me fr (personal account) + me = { + isNormalUser = true; + extraGroups = [ "wheel" ]; + shell = pkgs.fish; + packages = with pkgs; [ + firefox + nitch + tldr + tree + ]; + }; + + # programming/development account + dev = { + isNormalUser = true; + extraGroups = [ "wheel" ]; + shell = pkgs.zsh; + packages = with pkgs; [ + tree + ]; + }; + + # user for my professional jobs and stuff + pro = { + isNormalUser = true; + extraGroups = [ "wheel" ]; + shell = pkgs.fish; + packages = with pkgs; [ + tree + ]; + }; + }; + # new users will use zsh by default + users.defaultUserShell = pkgs.bash; + + # ---- SYSTEM PACKAGES ----- + environment.systemPackages = with pkgs; [ + vim + wget + kitty + git + ]; + + + # Enable the use of certain programs + programs = { + hyprland.enable = true; + fish.enable = true; + zsh.enable = true; + }; + + # Enable the new CLI commands and the flakes as experimental features + nix.settings.experimental-features = [ + "nix-command" + "flakes" + ]; + + # Some programs need SUID wrappers, can be configured further or are + # started in user sessions. + # programs.mtr.enable = true; + # programs.gnupg.agent = { + # enable = true; + # enableSSHSupport = true; + # }; + + # Enable the OpenSSH daemon. + # services.openssh.enable = true; + + + # DO NOT MODIFY + system.stateVersion = "24.05"; # Did you read the comment? + +} + diff --git a/hosts/myputer/hardware-configuration.nix b/hosts/myputer/hardware-configuration.nix new file mode 100644 index 0000000..46551ec --- /dev/null +++ b/hosts/myputer/hardware-configuration.nix @@ -0,0 +1,41 @@ +# 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 + "/installer/scan/not-detected.nix") + ]; + + boot.initrd.availableKernelModules = [ "nvme" "xhci_pci" "ahci" "usb_storage" "usbhid" "sd_mod" ]; + boot.initrd.kernelModules = [ ]; + boot.kernelModules = [ "kvm-amd" ]; + boot.extraModulePackages = [ ]; + + fileSystems."/" = + { device = "/dev/disk/by-uuid/ff19e1b0-cacc-4270-a94b-7922f7224ae2"; + fsType = "ext4"; + }; + + fileSystems."/boot" = + { device = "/dev/disk/by-uuid/7046-177A"; + fsType = "vfat"; + options = [ "fmask=0077" "dmask=0077" ]; + }; + + swapDevices = + [ { device = "/dev/disk/by-uuid/7f7e9d69-78e0-49f1-b792-6be26ed8e040"; } + ]; + + # 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.enp34s0.useDHCP = lib.mkDefault true; + # networking.interfaces.wlp38s0.useDHCP = lib.mkDefault true; + + nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux"; + hardware.cpu.amd.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware; +} diff --git a/hosts/myputer/sddm-theme.nix b/hosts/myputer/sddm-theme.nix new file mode 100644 index 0000000..d60c046 --- /dev/null +++ b/hosts/myputer/sddm-theme.nix @@ -0,0 +1,35 @@ +{ pkgs }: + +let + #image = pkgs.fetchurl { + # url = "https://"; + # sha256 = ""; + #}; +in +pkgs.stdenv.mkDerivation { + name = "sddm-theme"; + src = pkgs.fetchFromGitHub { + owner = "MarianArlt"; + repo = "sddm-sugar-dark"; + rev = "ceb2c455663429be03ba62d9f898c571650ef7fe"; + sha256 = "0153z1kylbhc9d12nxy9vpn0spxgrhgy36wy37pk6ysq7akaqlvy"; + }; + # dependencies + buildInputs = with pkgs.libsForQt5; [ + qt5.qtbase + qt5.qtx11extras + qt5.qtquickcontrols2 + qt5.qtgraphicaleffects + qt5.wrapQtAppsHook + #libsForQt5.qt5.qtquickcontrols2 + #libsForQt5.qt5.qtgraphicaleffects + ]; + installPhase = '' + # move necessary files + mkdir -p $out + cp -R ./* $out/ + ''; + # set background + #rm $out/Background.jpg + #mv ${image} $out/Background.jpg +} diff --git a/modules/core/bluetooth.nix b/modules/core/bluetooth.nix new file mode 100644 index 0000000..400abfc --- /dev/null +++ b/modules/core/bluetooth.nix @@ -0,0 +1,12 @@ +{ pkgs, ... }: + +{ + # Enable Bluetooth + hardware.bluetooth.enable = true; + hardware.bluetooth.powerOnBoot = false; + + # TODO: this should be managed by home-manager + environment.systemPackages = with pkgs; [ + overskride + ]; +} diff --git a/modules/core/garbage-collector.nix b/modules/core/garbage-collector.nix new file mode 100644 index 0000000..683602b --- /dev/null +++ b/modules/core/garbage-collector.nix @@ -0,0 +1,16 @@ +{ ... }: + +{ + # Optimize storage and automatic scheduled GC running + # If you want to run GC manually, use commands: + # `nix-store --optimize` for finding and eliminating redundant copies of identical store paths + # `nix-store --gc` for optimizing the nix store and removing unreferenced and obsolete store paths + # `nix-collect-garbage -d` for deleting old generations of user profiles + nix.settings.auto-optimise-store = true; + nix.optimise.automatic = true; + nix.gc = { + automatic = true; + dates = "weekly"; + options = "--delete-older-than 14d"; + }; +} diff --git a/modules/core/pipewire.nix b/modules/core/pipewire.nix new file mode 100644 index 0000000..d3d1852 --- /dev/null +++ b/modules/core/pipewire.nix @@ -0,0 +1,29 @@ +# Credit: https://github.com/XNM1/linux-nixos-hyprland-config-dotfiles/ +{ pkgs, ... }: + +{ + # Enable sound with pipewire. + hardware.pulseaudio.enable = false; + security.rtkit.enable = true; + services.pipewire = { + enable = true; + + alsa.enable = true; + alsa.support32Bit = true; + pulse.enable = true; + jack.enable = true; + + wireplumber.enable = true; + + # use the example session manager (no others are packaged yet so this is enabled by default, + # no need to redefine it in your config for now) + # media-session.enable = true; + }; + + # TODO: these should instead be manager but home-manager + environment.systemPackages = with pkgs; [ + helvum + easyeffects + ]; +} +