diff --git a/flake.nix b/flake.nix index e1f1c386..07908e76 100644 --- a/flake.nix +++ b/flake.nix @@ -16,70 +16,71 @@ home-manager.inputs.nixpkgs.follows = "nixpkgs"; # Other Flakes - emacs-overlay.url = "github:nix-community/emacs-overlay"; + emacs-overlay.url = "github:nix-community/emacs-overlay"; nur.url = "github:nix-community/NUR"; }; # Outputs is a function that takes the inputs as arguments. # To handle extra arguments we use the inputs@ pattern. # It gives a name to the ... ellipses. - outputs = inputs @ { nixpkgs, home-manager, ... }: + outputs = inputs@{ nixpkgs, home-manager, ... }: - # With let you can define local variables - let - # We bring these functions into the scope for the outputs. - inherit (builtins) attrValues; # TODO: What does this do - # inherit (nixpkgs.lib) nixosSystem; - # inherit (home-manager.lib) homeManagerConfiguration; + # With let you can define local variables + let + # We bring these functions into the scope for the outputs. + inherit (builtins) attrValues; # TODO: What does this do + # inherit (nixpkgs.lib) nixosSystem; + # inherit (home-manager.lib) homeManagerConfiguration; - # Disabled since HomeManager module inherits these in extraSpecialArgs - # Add overlays from other flakes so we can use them from pkgs. - overlays = { - nur = inputs.nur.overlay; - emacs = inputs.emacs-overlay.overlay; - }; - in + # Disabled since HomeManager module inherits these in extraSpecialArgs + # Add overlays from other flakes so we can use them from pkgs. + overlays = { + nur = inputs.nur.overlay; + emacs = inputs.emacs-overlay.overlay; + }; - # The rec expression turns a basic set into a set where self-referencing is possible. - # It is a shorthand for recursive and allows to use the values defined in this set from its own scope. - rec { + # The rec expression turns a basic set into a set where self-referencing is possible. + # It is a shorthand for recursive and allows to use the values defined in this set from its own scope. + in rec { - # System configurations + HomeManager module - # Accessible via 'nixos-rebuild' - nixosConfigurations = { - # We give our configuration a name (the hostname) to choose a configuration when rebuilding. - # This makes it easy to add different configurations later (e.g. for a laptop). - # Usage: sudo nixos-rebuild switch --flake .#nixinator - nixinator = nixpkgs.lib.nixosSystem { - system = "x86_64-linux"; + # System configurations + HomeManager module + # Accessible via 'nixos-rebuild' + nixosConfigurations = { + # We give our configuration a name (the hostname) to choose a configuration when rebuilding. + # This makes it easy to add different configurations later (e.g. for a laptop). + # Usage: sudo nixos-rebuild switch --flake .#nixinator + nixinator = nixpkgs.lib.nixosSystem { + system = "x86_64-linux"; - # >> Main NixOS configuration file << - modules = [ - # TODO: Modularize - ./nixos/configuration.nix + # >> Main NixOS configuration file << + modules = [ + # TODO: Modularize + ./nixos/configuration.nix - # TODO: Investigate this { ... } module syntax - # Overlays - { - # Since HomeManager uses global pkgs we can set the overlays here - nixpkgs.overlays = attrValues overlays; - } + # TODO: Investigate this { ... } module syntax + # Overlays + { + # Since HomeManager uses global pkgs we can set the overlays here + nixpkgs.overlays = attrValues overlays; + } - # HomeManager - home-manager.nixosModules.home-manager - { - home-manager.useGlobalPkgs = true; # Use systems pkgs, disables nixpkgs.* options in home.nix - home-manager.useUserPackages = true; # Enable installing packages through users.christoph.packages - home-manager.users.christoph = import ./home/home.nix; + # HomeManager + home-manager.nixosModules.home-manager + { + home-manager.useGlobalPkgs = + true; # Use systems pkgs, disables nixpkgs.* options in home.nix + home-manager.useUserPackages = + true; # Enable installing packages through users.christoph.packages + home-manager.users.christoph = import ./home/home.nix; - # Make our overlays available in home.nix - home-manager.extraSpecialArgs = { inherit inputs; }; - } - ]; + # Make our overlays available in home.nix + home-manager.extraSpecialArgs = { inherit inputs; }; + } + ]; - # Make our inputs available to the configuration.nix (for importing modules) - specialArgs = { inherit inputs; }; + # Make our inputs available to the configuration.nix (for importing modules) + specialArgs = { inherit inputs; }; + }; }; }; - }; } diff --git a/home/home.nix b/home/home.nix index 58e0f751..15b8ebf9 100644 --- a/home/home.nix +++ b/home/home.nix @@ -99,7 +99,7 @@ rec { }; - # sessionPath + # sessionPath = []; pointerCursor.package = pkgs.numix-cursor-theme; pointerCursor.gtk.enable = true; diff --git a/home/modules/emacs.nix b/home/modules/emacs.nix index 6fe12952..b84e64fb 100644 --- a/home/modules/emacs.nix +++ b/home/modules/emacs.nix @@ -11,7 +11,7 @@ let # We use it to determine if the config should be changed below cfg = config.modules.emacs; in { - imports = []; + imports = [ ]; # Options is a vector of options this module defines # This module defines only the "emacs" option and suboptions "enable" and "doom" @@ -36,9 +36,8 @@ in { # What home packages should be enabled home.packages = with pkgs; [ # NOTE: I have problems with emacsPgtkNativeComp/emacsPgtk and also emacs28NativeComp GUI - ((emacsPackagesFor emacsPgtkNativeComp).emacsWithPackages (epkgs: [ - epkgs.vterm - ])) + ((emacsPackagesFor emacsPgtkNativeComp).emacsWithPackages + (epkgs: [ epkgs.vterm ])) binutils zstd @@ -66,9 +65,7 @@ in { # enable = true; # }; - home.sessionPath = [ - "/home/${config.home.username}/.emacs.d/bin" - ]; + home.sessionPath = [ "/home/${config.home.username}/.emacs.d/bin" ]; # We tell HomeManager where the config files belong # home.file.".config/doom" = { diff --git a/nixos/cachix.nix b/nixos/cachix.nix index 88b2f08a..64734c30 100644 --- a/nixos/cachix.nix +++ b/nixos/cachix.nix @@ -1,4 +1,3 @@ - # WARN: this file will get overwritten by $ cachix use { pkgs, lib, ... }: @@ -6,8 +5,9 @@ let folder = ./cachix; toImport = name: value: folder + ("/" + name); filterCaches = key: value: value == "regular" && lib.hasSuffix ".nix" key; - imports = lib.mapAttrsToList toImport (lib.filterAttrs filterCaches (builtins.readDir folder)); + imports = lib.mapAttrsToList toImport + (lib.filterAttrs filterCaches (builtins.readDir folder)); in { inherit imports; - nix.binaryCaches = ["https://cache.nixos.org/"]; + nix.binaryCaches = [ "https://cache.nixos.org/" ]; } diff --git a/nixos/configuration.nix b/nixos/configuration.nix index 9347f013..b2fc1d24 100644 --- a/nixos/configuration.nix +++ b/nixos/configuration.nix @@ -5,13 +5,12 @@ { inputs, lib, config, pkgs, ... }: { - imports = - [ # Include the results of the hardware scan. - ./hardware-configuration.nix + imports = [ # Include the results of the hardware scan. + ./hardware-configuration.nix - # NixCommunity binary cache - ./cachix.nix - ]; + # NixCommunity binary cache + ./cachix.nix + ]; # Enable flakes # Keep nix-shell from grabage collection for direnv (keep-outputs + keep-derivations) @@ -72,7 +71,8 @@ enableAllFirmware = true; enableRedistributableFirmware = true; # Also enables microcode update - nvidia.modesetting.enable = true; # Not officially supported by NVidia but needed for wayland + nvidia.modesetting.enable = + true; # Not officially supported by NVidia but needed for wayland opengl.enable = true; opengl.driSupport = true; opengl.driSupport32Bit = true; @@ -99,10 +99,7 @@ }; # https://github.com/NixOS/nixpkgs/issues/179486 - i18n.supportedLocales = [ - "en_US.UTF-8/UTF-8" - "de_DE.UTF-8/UTF-8" - ]; + i18n.supportedLocales = [ "en_US.UTF-8/UTF-8" "de_DE.UTF-8/UTF-8" ]; # TODO: Other ports (tcp/udp/ssh...)? # Open ports in the firewall. @@ -118,10 +115,10 @@ networkmanager.enable = true; firewall.allowedTCPPorts = [ ]; - firewall.allowedTCPPortRanges = []; + firewall.allowedTCPPortRanges = [ ]; firewall.allowedUDPPorts = [ ]; - firewall.allowedUDPPortRanges = []; + firewall.allowedUDPPortRanges = [ ]; # Or disable the firewall altogether. # firewall.enable = false; @@ -190,24 +187,25 @@ fonts = { enableDefaultFonts = true; # Some default fonts for unicode coverage - fontDir.enable = true; # Puts fonts to /run/current-system/sw/share/X11/fonts + fontDir.enable = + true; # Puts fonts to /run/current-system/sw/share/X11/fonts # Font packages go here, don't do this with HomeManager as I need the fonts in the fontdir for flatpak apps fonts = with pkgs; [ - victor-mono + victor-mono source-code-pro - source-sans-pro + source-sans-pro source-serif-pro (pkgs.nerdfonts.override { fonts = [ "VictorMono" ]; }) source-han-mono - source-han-sans + source-han-sans source-han-serif - wqy_zenhei - wqy_microhei + wqy_zenhei + wqy_microhei # jetbrains-mono # etBook # overpass - ]; + ]; # TODO: Check if this works fontconfig = { @@ -224,7 +222,16 @@ users.users.christoph = { isNormalUser = true; description = "Christoph"; - extraGroups = [ "networkmanager" "wheel" "audio" "realtime" "docker" "adbusers" "scanner" "lp" ]; + extraGroups = [ + "networkmanager" + "wheel" + "audio" + "realtime" + "docker" + "adbusers" + "scanner" + "lp" + ]; shell = pkgs.fish; # TODO: Is this needed if programs.fish.enable = true? # We do this with HomeManager packages = with pkgs; [ ]; @@ -277,7 +284,8 @@ acpid.enable = true; dbus.enable = true; - flatpak.enable = true; # Not quite the nix style but useful for bottles/proprietary stuff + flatpak.enable = + true; # Not quite the nix style but useful for bottles/proprietary stuff fstrim.enable = true; fwupd.enable = true; locate.enable = true; # Periodically update index @@ -290,9 +298,7 @@ autoPrune.enable = true; }; - virtualisation.libvirtd = { - enable = true; - }; + virtualisation.libvirtd = { enable = true; }; # This value determines the NixOS release from which the default # settings for stateful data, like file locations and database versions diff --git a/nixos/hardware-configuration.nix b/nixos/hardware-configuration.nix index 85449209..fd07457c 100644 --- a/nixos/hardware-configuration.nix +++ b/nixos/hardware-configuration.nix @@ -4,11 +4,10 @@ { config, lib, pkgs, modulesPath, ... }: { - imports = [ - (modulesPath + "/installer/scan/not-detected.nix") - ]; + imports = [ (modulesPath + "/installer/scan/not-detected.nix") ]; - boot.initrd.availableKernelModules = [ "xhci_pci" "ahci" "nvme" "usbhid" "usb_storage" "sd_mod" ]; + boot.initrd.availableKernelModules = + [ "xhci_pci" "ahci" "nvme" "usbhid" "usb_storage" "sd_mod" ]; boot.initrd.kernelModules = [ ]; boot.kernelModules = [ "kvm-intel" ]; boot.extraModulePackages = [ ]; @@ -50,7 +49,8 @@ # networking.interfaces.wlp3s0.useDHCP = lib.mkDefault true; powerManagement.cpuFreqGovernor = lib.mkDefault "powersave"; - hardware.cpu.intel.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware; + hardware.cpu.intel.updateMicrocode = + lib.mkDefault config.hardware.enableRedistributableFirmware; # high-resolution display hardware.video.hidpi.enable = lib.mkDefault true; }