initial commit
Charlotte Som charlotte@som.codes
Sat, 07 Sep 2024 22:43:20 +0100
15 files changed,
408 insertions(+),
0 deletions(-)
jump to
A
flake.lock
@@ -0,0 +1,44 @@
+{ + "nodes": { + "nixpkgs": { + "locked": { + "lastModified": 1725001927, + "narHash": "sha256-eV+63gK0Mp7ygCR0Oy4yIYSNcum2VQwnZamHxYTNi+M=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "6e99f2a27d600612004fbd2c3282d614bfee6421", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-24.05", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-unstable": { + "locked": { + "lastModified": 1724819573, + "narHash": "sha256-GnR7/ibgIH1vhoy8cYdmXE6iyZqKqFxQSVkFgosBh6w=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "71e91c409d1e654808b2621f28a327acfdad8dc2", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "root": { + "inputs": { + "nixpkgs": "nixpkgs", + "nixpkgs-unstable": "nixpkgs-unstable" + } + } + }, + "root": "root", + "version": 7 +}
A
flake.nix
@@ -0,0 +1,74 @@
+{ + description = "charlotte's NixOS flake"; + inputs = { + nixpkgs.url = "github:NixOS/nixpkgs/nixos-24.05"; + nixpkgs-unstable.url = "github:NixOS/nixpkgs/nixos-unstable"; + }; + outputs = { self, nixpkgs, nixpkgs-unstable, ... }@inputs: { + nixosConfigurations = { + runestone = nixpkgs.lib.nixosSystem { + system = "x86_64-linux"; + + specialArgs = { + user-pkgs = self.packages; + unstable-pkgs = nixpkgs-unstable.legacyPackages."x86_64-linux"; + }; + + modules = [ + /* ({ config, pkgs, ... }: { + nixpkgs.overlays = [ + (final: prev: { + xdg-desktop-portal-gnome = prev.xdg-desktop-portal-gnome.overrideAttrs (oldAttrs: { + patches = (oldAttrs.patches or [ ]) ++ [ + ./packages/xdg-desktop-portal-gnome/unattended.patch + ]; + }); + }) + ]; + }) */ + + ({ ... }: { + system.stateVersion = "24.05"; + }) + + ./profiles/common/base.nix + ./profiles/common/locale.nix + ./profiles/common/networking.nix + ./profiles/common/desktop.nix + + ./profiles/runestone/hardware-configuration.nix + ./profiles/runestone/base.nix + ./profiles/runestone/desktop.nix + ./profiles/runestone/grafana-prometheus.nix + ]; + }; + + opal = nixpkgs.lib.nixosSystem { + system = "x86_64-linux"; + + specialArgs = { + user-pkgs = self.packages; + unstable-pkgs = nixpkgs-unstable.legacyPackages."x86_64-linux"; + }; + + modules = [ + ({ ... }: { + system.stateVersion = "24.05"; + }) + + ./profiles/common/base.nix + ./profiles/common/locale.nix + ./profiles/common/networking.nix + ./profiles/common/desktop.nix + + ./profiles/opal/hardware-configuration.nix + ./profiles/opal/base.nix + ./profiles/runestone/gnome.nix # TODO: replace with a nice wayland twm or something + ]; + }; + }; + + packages = + import ./packages/default.nix { pkgs = import nixpkgs { system = "x86_64-linux"; }; }; + }; +}
A
packages/berkeley-mono/package.nix
@@ -0,0 +1,37 @@
+{ stdenv, requireFile, unzip, lib }: +stdenv.mkDerivation { + pname = "berkeley-mono"; + version = "1.0"; + + src = + let + name = "berkeley-mono-typeface.zip"; + in + requireFile { + name = name; + url = "https://berkeleygraphics.com/typefaces/berkeley-mono/"; + sha256 = "sha256-PRmfxq1DYPbuIMmOie8T6iE26J2V97JEj2/a2OQ1uiw="; + }; + + buildInputs = [ unzip ]; + phases = [ + "unpackPhase" + "installPhase" + ]; + pathsToLink = [ "/share/fonts/truetype/" ]; + sourceRoot = "."; + installPhase = '' + install_path=$out/share/fonts/truetype + mkdir -p $install_path + find -name "BerkeleyMono*.ttf" -exec cp {} $install_path \; + ''; + + meta = with lib; { + homepage = "https://berkeleygraphics.com/typefaces/berkeley-mono/"; + description = '' + A love letter to the golden era of computing. + ''; + platforms = platforms.all; + licence = licences.unfree; + }; +}
A
packages/default.nix
@@ -0,0 +1,3 @@
+{pkgs}: { + berkeley-mono = pkgs.callPackage ./berkeley-mono/package.nix { }; +}
A
profiles/common/base.nix
@@ -0,0 +1,44 @@
+{ pkgs, ... }: { + nix = { + package = pkgs.lix; + settings.experimental-features = [ "nix-command" "flakes" ]; + gc = { + automatic = true; + dates = "monthly"; + }; + + registry.nixpkgs-unstable = { + from = { + id = "nixpkgs-unstable"; + type = "indirect"; + }; + to = { + type = "github"; + owner = "NixOS"; + repo = "nixpkgs"; + ref = "nixpkgs-unstable"; + }; + }; + }; + + boot.loader.systemd-boot.enable = true; + boot.loader.efi.canTouchEfiVariables = true; + boot.kernelPackages = pkgs.linuxPackages_latest; + + nixpkgs.config.allowUnfree = true; + programs.nix-ld.enable = true; + + security.sudo.wheelNeedsPassword = false; + services.openssh.enable = true; + services.tailscale.enable = true; + + programs.zsh.enable = true; + programs.git.enable = true; + + environment.systemPackages = with pkgs; [ + vim + wget + htop + tmux + ]; +}
A
profiles/common/desktop.nix
@@ -0,0 +1,19 @@
+{ lib, ... }: { + hardware.bluetooth.enable = true; + hardware.bluetooth.powerOnBoot = true; + + services.xserver.enable = true; + services.xserver.xkb = lib.mkDefault { + layout = "us"; + variant = ""; + options = "compose:ralt"; + }; + + hardware.pulseaudio.enable = false; + security.rtkit.enable = true; + services.pipewire = { + enable = true; + alsa.enable = true; + pulse.enable = true; + }; +}
A
profiles/common/locale.nix
@@ -0,0 +1,14 @@
+{ ... }: { + i18n.defaultLocale = "en_US.UTF-8"; + i18n.extraLocaleSettings = { + LC_ADDRESS = "en_GB.UTF-8"; + LC_IDENTIFICATION = "en_GB.UTF-8"; + LC_MEASUREMENT = "en_GB.UTF-8"; + LC_MONETARY = "en_GB.UTF-8"; + LC_NAME = "en_GB.UTF-8"; + LC_NUMERIC = "en_GB.UTF-8"; + LC_PAPER = "en_GB.UTF-8"; + LC_TELEPHONE = "en_GB.UTF-8"; + LC_TIME = "en_GB.UTF-8"; + }; +}
A
profiles/common/networking.nix
@@ -0,0 +1,5 @@
+{ ... }: { + networking.networkmanager.enable = true; + systemd.services.NetworkManager-wait-online.enable = false; + networking.firewall.enable = false; +}
A
profiles/opal/base.nix
@@ -0,0 +1,29 @@
+{ pkgs, ... }: { + networking.hostName = "opal"; + time.timeZone = "Europe/London"; + + boot.initrd.kernelModules = [ "ideapad_laptop" ]; + boot.kernelParams = [ "i8042.direct" "i8042.dumbkbd" ]; # funny keyboard issue + + hardware.opengl = { + enable = true; + extraPackages = with pkgs; [ + intel-media-driver + intel-vaapi-driver + libvdpau-va-gl + libva + onevpl-intel-gpu + ]; + }; + + users.users.charlotte = { + isNormalUser = true; + description = "charlotte"; + extraGroups = [ "networkmanager" "wheel" "video" ]; + shell = pkgs.zsh; + + packages = (with pkgs; [ + stow + ]); + }; +}
A
profiles/opal/hardware-configuration.nix
@@ -0,0 +1,32 @@
+{ config, lib, modulesPath, ... }: { + imports = + [ + (modulesPath + "/installer/scan/not-detected.nix") + ]; + + boot.initrd.availableKernelModules = [ "xhci_pci" "thunderbolt" "nvme" ]; + boot.initrd.kernelModules = [ ]; + boot.kernelModules = [ "kvm-intel" ]; + boot.extraModulePackages = [ ]; + + fileSystems."/" = + { + device = "/dev/disk/by-uuid/13f110b2-0cb6-4f22-a3c1-5d764d0ba9f7"; + fsType = "ext4"; + }; + + fileSystems."/boot" = + { + device = "/dev/disk/by-uuid/60C6-4ADE"; + fsType = "vfat"; + }; + + swapDevices = + [{ device = "/dev/disk/by-uuid/7919a726-42b5-4b5d-b8f5-7f556049ebc1"; }]; + + networking.useDHCP = lib.mkDefault true; + + nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux"; + powerManagement.cpuFreqGovernor = lib.mkDefault "powersave"; + hardware.cpu.intel.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware; +}
A
profiles/runestone/base.nix
@@ -0,0 +1,38 @@
+{ pkgs, user-pkgs, unstable-pkgs, ... }: { + networking.hostName = "runestone"; + time.timeZone = "Europe/London"; + + hardware.opengl = { + enable = true; + extraPackages = with pkgs; [ + intel-media-driver + intel-vaapi-driver + libvdpau-va-gl + libva + onevpl-intel-gpu + ]; + }; + + users.users.charlotte = { + isNormalUser = true; + description = "charlotte"; + extraGroups = [ "networkmanager" "wheel" "video" ]; + shell = pkgs.zsh; + }; + + programs.firefox.enable = true; + environment.systemPackages = (with pkgs;[ + vscode-fhs + nixd + nixpkgs-fmt + foot + ]) ++ (with user-pkgs;[ + berkeley-mono + ]); + + users.users.charlotte.packages = (with pkgs; [ + stow + ]) ++ (with unstable-pkgs; [ + lan-mouse + ]); +}
A
profiles/runestone/desktop.nix
@@ -0,0 +1,12 @@
+{ pkgs, ... }: { + services.xserver.desktopManager.gnome.enable = true; + + services.xserver.displayManager.gdm.enable = true; + services.displayManager.autoLogin = { + enable = true; + user = "charlotte"; + }; + + programs.kdeconnect.enable = true; + programs.kdeconnect.package = pkgs.gnomeExtensions.gsconnect; +}
A
profiles/runestone/grafana-prometheus.nix
@@ -0,0 +1,24 @@
+{ config, ... }: { + services.grafana = { + enable = true; + + settings.server = { + http_addr = "0.0.0.0"; + http_port = 2342; + }; + }; + + services.prometheus.enable = true; + services.prometheus.exporters.node = { + enable = true; + port = 9092; + }; + services.prometheus.scrapeConfigs = [ + { + job_name = "runestone"; + static_configs = [ + { targets = [ "127.0.0.1:${toString config.services.prometheus.exporters.node.port}" ]; } + ]; + } + ]; +}
A
profiles/runestone/hardware-configuration.nix
@@ -0,0 +1,32 @@
+{ config, lib, modulesPath, ... }: { + imports = + [ + (modulesPath + "/installer/scan/not-detected.nix") + ]; + + boot.initrd.availableKernelModules = [ "vmd" "xhci_pci" "ahci" "nvme" "usb_storage" "sd_mod" ]; + boot.initrd.kernelModules = [ ]; + boot.kernelModules = [ "kvm-intel" ]; + boot.extraModulePackages = [ ]; + + fileSystems."/" = + { + device = "/dev/disk/by-uuid/a69298ce-9e01-43d4-b395-ddec19dc4a42"; + fsType = "ext4"; + }; + + fileSystems."/boot" = + { + device = "/dev/disk/by-uuid/92E6-F710"; + fsType = "vfat"; + options = [ "fmask=0077" "dmask=0077" ]; + }; + + swapDevices = + [{ device = "/dev/disk/by-uuid/ded24e03-a766-49eb-b494-071a9ac45423"; }]; + + networking.useDHCP = lib.mkDefault true; + + nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux"; + hardware.cpu.intel.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware; +}