From 56992b8c945d497a623fe693847c91235be1ae02 Mon Sep 17 00:00:00 2001 From: sefidel Date: Tue, 28 Dec 2021 01:11:25 +0900 Subject: initial commit --- nixos/configurations/alpha.nix | 112 ++++++++++++++++++++++++++ nixos/configurations/default.nix | 5 ++ nixos/configurations/hardware/alpha.nix | 55 +++++++++++++ nixos/modules/cachix/caches/nix-community.nix | 12 +++ nixos/modules/cachix/default.nix | 13 +++ nixos/modules/default.nix | 5 ++ nixos/modules/flake.nix | 12 +++ nixos/modules/nix.nix | 34 ++++++++ 8 files changed, 248 insertions(+) create mode 100644 nixos/configurations/alpha.nix create mode 100644 nixos/configurations/default.nix create mode 100644 nixos/configurations/hardware/alpha.nix create mode 100644 nixos/modules/cachix/caches/nix-community.nix create mode 100644 nixos/modules/cachix/default.nix create mode 100644 nixos/modules/default.nix create mode 100644 nixos/modules/flake.nix create mode 100644 nixos/modules/nix.nix (limited to 'nixos') diff --git a/nixos/configurations/alpha.nix b/nixos/configurations/alpha.nix new file mode 100644 index 0000000..27e8ceb --- /dev/null +++ b/nixos/configurations/alpha.nix @@ -0,0 +1,112 @@ +{ config, pkgs, lib, ...}: + +{ + imports = []; + + security.chromiumSuidSandbox.enable = true; + + boot.kernelPackages = pkgs.linuxPackages_xanmod; + # GRUB bootloader + boot.loader.efi.canTouchEfiVariables = true; + boot.loader.grub = { + enable = true; + version = 2; + + efiSupport = true; + configurationLimit = 10; + device = "nodev"; + useOSProber = true; + # device = "/dev/disk/by-uuid/7905-2E41"; + extraEntries = '' + menuentry "Reboot" { + reboot + } + menuentry "Shutdown" { + halt + } + ''; + }; + + networking.networkmanager.enable = true; + networking.useDHCP = false; + networking.firewall.enable = true; + + i18n.defaultLocale = "en_US.UTF-8"; + i18n.inputMethod.enabled = "kime"; + + console.font = "Lat2-Terminus16"; + console.keyMap = "us"; + + time.timeZone = "Asia/Seoul"; + + environment.systemPackages = with pkgs; [ ]; + + services.openssh.enable = true; + + sound.enable = true; + hardware.pulseaudio = { + enable = true; + package = pkgs.pulseaudioFull; + }; + + hardware.bluetooth.enable = true; + + services.greetd = { + enable = true; + + settings.default_session.command = "${pkgs.greetd.tuigreet}/bin/tuigreet --time --cmd sway"; + }; + + programs = { + sway = { + enable = true; + wrapperFeatures.gtk = true; + + extraPackages = with pkgs; [ + autotiling + alacritty + swaylock + swayidle + swaybg + wayland-utils + wl-clipboard + grim + slurp + sway-contrib.grimshot + waybar + bemenu + qt5.qtwayland + xdg_utils + ]; + }; + + zsh.enable = true; + zsh.enableCompletion = false; + }; + + hardware.opengl.enable = true; + hardware.opengl.driSupport32Bit = true; + hardware.opengl.extraPackages = with pkgs; [ vaapiVdpau libvdpau-va-gl ]; + + virtualisation.libvirtd.enable = true; + + users.users = { + boopy = { + isNormalUser = true; + shell = pkgs.zsh; + + extraGroups = [ + "wheel" + "audio" + "networkmanager" + "libvirtd" + ]; + }; + }; + + # This value determines the NixOS release with which your system is to be + # compatible, in order to avoid breaking some software such as database + # servers. You should change this only after NixOS release notes say you + # should. + system.stateVersion = "22.05"; # Did you read the comment? +} diff --git a/nixos/configurations/default.nix b/nixos/configurations/default.nix new file mode 100644 index 0000000..8b84279 --- /dev/null +++ b/nixos/configurations/default.nix @@ -0,0 +1,5 @@ +{ self, nixpkgs, ... } @ inputs: + +{ + alpha = self.lib.mkSystem "alpha" nixpkgs; +} diff --git a/nixos/configurations/hardware/alpha.nix b/nixos/configurations/hardware/alpha.nix new file mode 100644 index 0000000..e8d3e17 --- /dev/null +++ b/nixos/configurations/hardware/alpha.nix @@ -0,0 +1,55 @@ +{ config, lib, pkgs, ... }: + +let + espDev = "/dev/disk/by-uuid/7905-2E41"; + btrfsDev = "/dev/disk/by-uuid/dc47a0a6-3c73-45c1-951c-40032e762180"; + swapDev = "/dev/disk/by-uuid/4a74b247-99e9-42c7-9a86-75aea964bb85"; + dataDev = "/dev/disk/by-uuid/fe7a00a8-0a3c-48de-9d7a-ed7cf172f501"; + + subvolume = name: { + device = btrfsDev; + fsType = "btrfs"; + options = [ "subvol=${name}" "compress=zstd" "noatime" ]; + }; +in +{ + boot.initrd.availableKernelModules = [ "xhci-pci" "ahci" "usb_storage" "usbhid" "sd_mod" ]; + boot.initrd.kernelModules = [ ]; + boot.kernelModules = [ "kvm-amd" ]; + boot.extraModulePackages = [ ]; + + hardware.cpu.amd.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware; + hardware.enableRedistributableFirmware = true; + + fileSystems."/" = subvolume "root"; + fileSystems."/home" = subvolume "home"; + fileSystems."/nix" = subvolume "nix"; + fileSystems."/persist" = subvolume "persist"; + fileSystems."/var/log" = { + device = btrfsDev; + fsType = "btrfs"; + options = [ "subvol=log" "compress=zstd" "noatime" ]; + neededForBoot = true; + }; + + fileSystems."/boot" = { + device = espDev; + fsType = "vfat"; + }; + + fileSystems."/data" = { + device = dataDev; + fsType = "ext4"; + }; + + fileSystems."/tmp" = { + fsType = "tmpfs"; + device = "tmpfs"; + options = [ "nosuid" "nodev" "relatime" "size=14G" ]; + }; + + swapDevices = [{ device = swapDev; }]; + + nix.maxJobs = lib.mkDefault 4; + powerManagement.cpuFreqGovernor = lib.mkDefault "schedutil"; +} diff --git a/nixos/modules/cachix/caches/nix-community.nix b/nixos/modules/cachix/caches/nix-community.nix new file mode 100644 index 0000000..2b4c408 --- /dev/null +++ b/nixos/modules/cachix/caches/nix-community.nix @@ -0,0 +1,12 @@ +{ config, lib, ... }: + +{ + nix = { + binaryCaches = [ + "https://nix-community.cachix.org" + ]; + binaryCachePublicKeys = [ + "nix-community.cachix.org-1:mB9FSh9qf2dCimDSUo8Zy7bkq5CX+/rkCWyvRCYg3Fs=" + ]; + }; +} diff --git a/nixos/modules/cachix/default.nix b/nixos/modules/cachix/default.nix new file mode 100644 index 0000000..38ad575 --- /dev/null +++ b/nixos/modules/cachix/default.nix @@ -0,0 +1,13 @@ +{ config, pkgs, lib, ... }: +let + folder = ./caches; + toImport = name: value: folder + ("/" + name); + filterCaches = key: value: value == "regular" && lib.hasSuffix ".nix" key; + imports = lib.mapAttrsToList toImport (lib.filterAttrs filterCaches (builtins.readDir folder)); +in +{ + inherit imports; + nix.binaryCaches = [ "https://cache.nixos.org/" ]; + + environment.systemPackages = [ pkgs.cachix ]; +} diff --git a/nixos/modules/default.nix b/nixos/modules/default.nix new file mode 100644 index 0000000..f17f392 --- /dev/null +++ b/nixos/modules/default.nix @@ -0,0 +1,5 @@ +{ + cachix = import ./cachix; + flake = import ./flake.nix; + nix = import ./nix.nix; +} diff --git a/nixos/modules/flake.nix b/nixos/modules/flake.nix new file mode 100644 index 0000000..a88f9d0 --- /dev/null +++ b/nixos/modules/flake.nix @@ -0,0 +1,12 @@ +{ config, pkgs, lib, ... }: + +{ + options.nix.flakes.enable = lib.mkEnableOption "nix flakes"; + + config = lib.mkIf config.nix.flakes.enable { + nix = { + package = pkgs.nixUnstable; + experimentalFeatures = "nix-command flakes"; + }; + }; +} diff --git a/nixos/modules/nix.nix b/nixos/modules/nix.nix new file mode 100644 index 0000000..04fafac --- /dev/null +++ b/nixos/modules/nix.nix @@ -0,0 +1,34 @@ +{ config, lib, ... }: + +let + allowed = config.nix.allowedUnfree; +in +{ + options.nix = { + experimentalFeatures = lib.mkOption { + type = lib.types.separatedString " "; + default = ""; + description = '' + Enables experimental features + ''; + }; + + allowedUnfree = lib.mkOption { + type = lib.types.listOf lib.types.string; + default = [ ]; + description = '' + Allows for unfree packages by their name. + ''; + }; + }; + + config = lib.mkMerge [ + (lib.mkIf (config.nix.experimentalFeatures != "") { nix.extraOptions = "experimental-features = ${config.nix.experimentalFeatures}"; }) + (lib.mkIf (allowed != [ ]) { nixpkgs.config.allowUnfreePredicate = (pkg: __elem (lib.getName pkg) allowed); }) + { nix.autoOptimiseStore = lib.mkDefault true; } + { + nix.gc.automatic = lib.mkDefault true; + nix.gc.options = lib.mkDefault "--delete-older-than 10d"; + } + ]; +} -- cgit 1.4.1