From b22bc9086990623ad98886febf54646d28d86777 Mon Sep 17 00:00:00 2001 From: fleaz Date: Mon, 24 Jan 2022 22:40:22 +0100 Subject: [PATCH] Initial commit with imported configs --- README.md | 10 + machines/cray/configuration.nix | 355 +++++++++++++++++++ machines/cray/hardware-configuration.nix | 31 ++ machines/jimbo/configuration.nix | 397 ++++++++++++++++++++++ machines/jimbo/hardware-configuration.nix | 39 +++ 5 files changed, 832 insertions(+) create mode 100644 README.md create mode 100644 machines/cray/configuration.nix create mode 100644 machines/cray/hardware-configuration.nix create mode 100644 machines/jimbo/configuration.nix create mode 100644 machines/jimbo/hardware-configuration.nix diff --git a/README.md b/README.md new file mode 100644 index 0000000..2d012d0 --- /dev/null +++ b/README.md @@ -0,0 +1,10 @@ +# nixos-configuration + +The NixOS configuration for my workstations. + + +## Usage + +Symlink `/etc/nixos/configuration.nix` to the corresponding +`machines//configuration.nix` entry and just keep using +*nixos-rebuild* like nothing happend. diff --git a/machines/cray/configuration.nix b/machines/cray/configuration.nix new file mode 100644 index 0000000..d6f37b2 --- /dev/null +++ b/machines/cray/configuration.nix @@ -0,0 +1,355 @@ +# Edit this configuration file to define what should be installed on +# your system. Help is available in the configuration.nix(5) man page +# and in the NixOS manual (accessible by running ‘nixos-help’). + +{ config, pkgs, ... }: + +{ + imports = + [ + # Include the results of the hardware scan. + ./hardware-configuration.nix + + ]; + + # Use the systemd-boot EFI boot loader. + boot.loader.systemd-boot.enable = true; + boot.loader.efi.canTouchEfiVariables = true; + + networking.hostName = "cray"; # Define your hostname. + + networking.interfaces.eno1.wakeOnLan.enable = true; + + # Set your time zone. + time.timeZone = "Europe/Berlin"; + + # The global useDHCP flag is deprecated, therefore explicitly set to false here. + # Per-interface useDHCP will be mandatory in the future, so this generated config + # replicates the default behaviour. + networking.useDHCP = false; + networking.interfaces.eno1.useDHCP = true; + + nix.buildMachines = [{ + hostName = "phoibe.cased.de"; + sshUser = "fleaz"; + sshKey = "/home/fleaz/.ssh/id_phoibe"; + system = "x86_64-linux"; + # if the builder supports building for multiple architectures, + # replace the previous line by, e.g., + # systems = ["x86_64-linux" "aarch64-linux"]; + maxJobs = 8; + speedFactor = 2; + #supportedFeatures = [ "nixos-test" "benchmark" "big-parallel" "kvm" ]; + supportedFeatures = [ ]; + mandatoryFeatures = [ ]; + }]; + nix.distributedBuilds = true; + # optional, useful when the builder has a faster internet connection than yours + nix.extraOptions = '' + builders-use-substitutes = true + ''; + + # Configure network proxy if necessary + # networking.proxy.default = "http://user:password@proxy:port/"; + # networking.proxy.noProxy = "127.0.0.1,localhost,internal.domain"; + + # Select internationalisation properties. + # i18n.defaultLocale = "en_US.UTF-8"; + # console = { + # font = "Lat2-Terminus16"; + # keyMap = "us"; + # }; + + # Enable the X11 windowing system. + # services.xserver.enable = true; + # services.xserver.videoDrivers = ["nvidia"]; + + hardware.opengl = { + enable = true; + driSupport = true; + }; + + # Configure keymap in X11 + # services.xserver.layout = "us"; + # services.xserver.xkbOptions = "eurosign:e"; + + services.printing.enable = true; + + # Enable sound. + security.rtkit.enable = true; + services.pipewire = { + enable = true; + alsa.enable = true; + alsa.support32Bit = true; + pulse.enable = true; + }; + + # Enable touchpad support (enabled default in most desktopManager). + # services.xserver.libinput.enable = true; + + # Define a user account. Don't forget to set a password with ‘passwd’. + users.users.fleaz = { + isNormalUser = true; + extraGroups = [ "wheel" ]; # Enable ‘sudo’ for the user. + }; + + # allow evil closed-source code + nixpkgs.config.allowUnfree = true; + + virtualisation.podman = { + enable=true; + dockerCompat = true; + }; + + home-manager.users.fleaz = { pkgs, ... }: { + home.packages = with pkgs; [ + httpie + _1password-gui + + vscode + vscode-extensions.vscodevim.vim + + wdisplays + wofi + firefox + discord + gnome.gnome-keyring + via + docker-compose + + + swaylock + swayidle + wl-clipboard + mako + waybar + sway-contrib.grimshot + foot + fira-code + prusa-slicer + htop + ]; + + + programs.vim = { + enable = true; + plugins = with pkgs.vimPlugins; [ vim-airline neoformat vim-monokai ]; + settings = { ignorecase = true; }; + extraConfig = '' + set mouse=a + ''; + }; + + programs.zsh.enable = true; + + programs.git = { + enable = true; + userName = "fleaz"; + userEmail = "mail@felixbreidenstein.de"; + }; + + programs.waybar = { + enable = true; + }; + + programs.mako = { + enable = true; + groupBy = "app-name"; + defaultTimeout = 5000; + }; + + services.redshift = { + enable = true; + package = pkgs.gammastep; + latitude = "49.52"; + longitude = "10.17"; + temperature = { + day = 6500; + night = 3500; + }; + }; + + programs.foot = { + enable = true; + settings = { + main = { + term = "xterm-256color"; + font = "FiraCode:size=14"; + }; + scrollback = { + lines = 100000; + }; + colors = { + alpha = "0.98"; + foreground = "B3B1AD"; + background = "0A0E14"; + regular0 = "01060E"; + regular1 = "EA6C73"; + regular2 = "91B362"; + regular3 = "F9AF4F"; + regular4 = "53BDFA"; + regular5 = "FAE994"; + regular6 = "90E1C6"; + regular7 = "C7C7C7"; + bright0 = "686868"; + bright1 = "F07178"; + bright2 = "C2D94C"; + bright3 = "FFB454"; + bright4 = "59C2FF"; + bright5 = "FFEE99"; + bright6 = "95E6CB"; + bright7 = "FFFFFF"; + }; + }; + }; + + + + wayland.windowManager.sway = { + enable = true; + + config = { + modifier = "Mod4"; + input = { + "17498:8800:KBDFans_DZ60" = { + xkb_layout = "eu"; + }; + #"1133:49295:Logitech_G403_HERO_Gaming_Mouse" = { + # pointer_accel = "1"; + #}; + }; + output = { + "*".bg = "/home/fleaz/Downloads/spongebob.jpg fill"; + "DVI-D-1" = { + mode = "1920x1200"; + transform = "270"; + position = "0,0"; + }; + "HDMI-A-1" = { + mode = "3840x2160"; + scale = "1.2"; + position = "1200,0"; + }; + "DP-1" = { + mode = "3840x2160"; + scale = "1.2"; + position = "4400,0"; + }; + + }; + gaps = { + inner = 8; + }; + window.border = 0; + workspaceAutoBackAndForth = true; + terminal = "foot"; + + bars = [ { + command = "${pkgs.waybar}/bin/waybar"; + }]; + + keybindings = let + mod = "Mod4"; + in { + "${mod}+Return" = "exec foot"; + "${mod}+p" = "{pkgs.wofi}/bin/wofi --show drun"; + + "${mod}+Shift+c" = "reload"; + "${mod}+Shift+q" = "kill"; + "${mod}+Shift+e" = "exec swaynag -t warning -m 'You pressed the exit shortcut. Do you really want to exit sway? This will end your Wayland session.' -b 'Yes, exit sway' 'swaymsg exit'"; + "${mod}+x" = "move workspace to output right"; + + "${mod}+h" = "focus left"; + "${mod}+j" = "focus down"; + "${mod}+k" = "focus up"; + "${mod}+l" = "focus right"; + + "${mod}+Shift+h" = "move left"; + "${mod}+Shift+j" = "move down"; + "${mod}+Shift+k" = "move up"; + "${mod}+Shift+l" = "move right"; + + "${mod}+s" = "split v"; + "${mod}+w" = "split h"; + + "${mod}+t" = "layout tabbed"; + "${mod}+r" = "mode resize"; + + "${mod}+f" = "fullscreen toggle"; + "${mod}+Shift+space" = "floating toggle"; + + "${mod}+1" = "workspace 1"; + "${mod}+2" = "workspace 2"; + "${mod}+3" = "workspace 3"; + "${mod}+4" = "workspace 4"; + "${mod}+5" = "workspace 5"; + "${mod}+6" = "workspace 6"; + "${mod}+7" = "workspace 7"; + "${mod}+8" = "workspace 8"; + "${mod}+9" = "workspace 9"; + "${mod}+0" = "workspace 10"; + + "${mod}+Shift+1" = "move container to workspace 1"; + "${mod}+Shift+2" = "move container to workspace 2"; + "${mod}+Shift+3" = "move container to workspace 3"; + "${mod}+Shift+4" = "move container to workspace 4"; + "${mod}+Shift+5" = "move container to workspace 5"; + "${mod}+Shift+6" = "move container to workspace 6"; + "${mod}+Shift+7" = "move container to workspace 7"; + "${mod}+Shift+8" = "move container to workspace 8"; + "${mod}+Shift+9" = "move container to workspace 9"; + "${mod}+Shift+0" = "move container to workspace 10"; + + + # Multimedia Keys + "XF86AudioMute" = "exec ${pkgs.pulseaudio}/bin/pactl set-sink-mute @DEFAULT_SINK@ toggle"; + "XF86AudioRaiseVolume" = "exec ${pkgs.pulseaudio}/bin/pactl set-sink-volume @DEFAULT_SINK@ +5%"; + "XF86AudioLowerVolume" = "exec ${pkgs.pulseaudio}/bin/pactl set-sink-volume @DEFAULT_SINK@ -5%"; + }; + + }; + }; + }; + + + # List packages installed in system profile. To search, run: + # $ nix search wget + environment.systemPackages = with pkgs; [ + neovim + wget + curl + git + ]; + + programs.neovim.vimAlias = true; + + # 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; + programs.ssh.startAgent = true; + + # Open ports in the firewall. + # networking.firewall.allowedTCPPorts = [ ... ]; + # networking.firewall.allowedUDPPorts = [ ... ]; + # Or disable the firewall altogether. + # networking.firewall.enable = false; + + # This value determines the NixOS release from which the default + # settings for stateful data, like file locations and database versions + # on your system were taken. It‘s perfectly fine and recommended to leave + # this value at the release version of the first install of this system. + # Before changing this value read the documentation for this option + # (e.g. man configuration.nix or on https://nixos.org/nixos/options.html). + system.stateVersion = "21.11"; # Did you read the comment? + +} + diff --git a/machines/cray/hardware-configuration.nix b/machines/cray/hardware-configuration.nix new file mode 100644 index 0000000..fca4215 --- /dev/null +++ b/machines/cray/hardware-configuration.nix @@ -0,0 +1,31 @@ +# 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 = [ "xhci_pci" "ehci_pci" "ahci" "nvme" "usbhid" "usb_storage" "sd_mod" ]; + boot.initrd.kernelModules = [ ]; + boot.kernelModules = [ "kvm-intel" ]; + boot.extraModulePackages = [ ]; + + fileSystems."/" = + { device = "/dev/disk/by-uuid/1d2ce540-2fce-4621-8a4d-e05e09369bc3"; + fsType = "ext4"; + }; + + fileSystems."/boot" = + { device = "/dev/disk/by-uuid/782C-3B0B"; + fsType = "vfat"; + }; + + swapDevices = + [ { device = "/dev/disk/by-uuid/6a0a9641-00c5-490e-abcc-9efeaeaca1f8"; } + ]; + + hardware.cpu.intel.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware; +} diff --git a/machines/jimbo/configuration.nix b/machines/jimbo/configuration.nix new file mode 100644 index 0000000..7069c37 --- /dev/null +++ b/machines/jimbo/configuration.nix @@ -0,0 +1,397 @@ +# Edit this configuration file to define what should be installed on +# your system. Help is available in the configuration.nix(5) man page +# and in the NixOS manual (accessible by running ‘nixos-help’). + +{ config, pkgs, ... }: + +let + home-manager = (import ./nix/sources.nix).home-manager; + secretsFile = "/root.key"; +in +{ + imports = + [ + # Include the results of the hardware scan. + ./hardware-configuration.nix + "${home-manager}/nixos" + ]; + + # Use the systemd-boot EFI boot loader. + boot.loader.efi.canTouchEfiVariables = true; + boot.loader.efi.efiSysMountPoint = "/boot/efi"; + + boot.loader.systemd-boot.enable = false; + boot.loader.grub = { + enable = true; + version = 2; + device = "nodev"; + efiSupport = true; + enableCryptodisk = true; + configurationLimit = 5; + }; + + # enable passing of keyfile between grub and initrd + boot.initrd.luks.devices."cryptroot" = { + fallbackToPassword = true; + keyFile = secretsFile; + }; + # copy the secret into the additional initramfs. `null` means same path + boot.initrd.secrets."${secretsFile}" = null; + + + networking.hostName = "jimbo"; # Define your hostname. + # networking.wireless.enable = true; # Enables wireless support via wpa_supplicant. + + # Set your time zone. + time.timeZone = "Europe/Berlin"; + + # The global useDHCP flag is deprecated, therefore explicitly set to false here. + networking.useDHCP = false; + networking.networkmanager.enable = true; + + + hardware.opengl = { + enable = true; + driSupport = true; + }; + + xdg = { + portal = { + enable = true; + extraPortals = with pkgs; [ + xdg-desktop-portal-wlr + xdg-desktop-portal-gtk + ]; + }; + }; + + hardware.bluetooth.enable = true; + + # Enable CUPS to print documents. + services.printing.enable = true; + + # Enable sound. + security.rtkit.enable = true; + services.pipewire = { + enable = true; + alsa.enable = true; + alsa.support32Bit = true; + pulse.enable = true; + }; + + # Enable touchpad support (enabled default in most desktopManager). + # services.xserver.libinput.enable = true; + + # Define a user account. Don't forget to set a password with ‘passwd’. + users.users.fleaz = { + isNormalUser = true; + shell = pkgs.zsh; + extraGroups = [ "wheel" "docker" ]; # Enable ‘sudo’ for the user. + }; + + # List packages installed in system profile. To search, run: + environment.systemPackages = with pkgs; [ + vim + wget + curl + git + ]; + + services.openssh.enable = true; + programs.ssh.startAgent = true; + + #virtualisation.podman = { + #enable=true; + #dockerCompat = true; + #dockerSocket.enable = true; + #}; + + # i need docker because of the --link flag + virtualisation.docker.enable = true; + + home-manager.users.fleaz = { pkgs, ... }: { + nixpkgs.config.allowUnfree = true; + home.packages = with pkgs; [ + httpie + _1password-gui + + vscode + vscode-extensions.vscodevim.vim + + + wdisplays + albert + firefox + chromium + discord + gnome.gnome-keyring + via + docker-compose + rocketchat-desktop + hicolor-icon-theme + gnome3.adwaita-icon-theme + cinnamon.nemo + awscli + element-desktop + signal-desktop + + dnsutils + mtr + tig + ncdu + fd + fzf + silver-searcher + thunderbird-wayland + mosh + mpv + poetry + go + python3Minimal + + swaylock + swayidle + wl-clipboard + mako + waybar + sway-contrib.grimshot + albert + foot + wofi + fira-code + prusa-slicer + htop + ]; + + + programs.neovim = { + enable = true; + vimAlias = true; + plugins = with pkgs.vimPlugins; [ vim-airline neoformat vim-monokai ]; + extraConfig = '' + set mouse=a + ''; + }; + + programs.zsh = { + enable = true; + sessionVariables = { + GOPATH = "/home/fleaz/workspace/go"; + }; + oh-my-zsh = { + enable = true; + plugins = [ "git" "fzf" ]; + theme = "robbyrussell"; + }; + history.size = 10000; + }; + + programs.git = { + enable = true; + userName = "fleaz"; + userEmail = "mail@felixbreidenstein.de"; + }; + + programs.waybar = { + enable = true; + }; + + programs.mako = { + enable = true; + groupBy = "app-name"; + defaultTimeout = 5000; + }; + + services.kanshi = { + enable = true; + + }; + + services.redshift = { + enable = true; + package = pkgs.gammastep; + latitude = "49.8"; + longitude = "8.6"; + tray = true; + settings = { + brightness = { + day = "1"; + night = "0.5"; + }; + }; + temperature = { + night = 3500; + day = 5500; + }; + }; + + + services.blueman-applet.enable = true; + + programs.foot = { + enable = true; + settings = { + main = { + term = "xterm-256color"; + font = "FiraCode:size=14"; + }; + scrollback = { + lines = 100000; + }; + colors = { + alpha = "0.98"; + foreground = "B3B1AD"; + background = "0A0E14"; + regular0 = "01060E"; + regular1 = "EA6C73"; + regular2 = "91B362"; + regular3 = "F9AF4F"; + regular4 = "53BDFA"; + regular5 = "FAE994"; + regular6 = "90E1C6"; + regular7 = "C7C7C7"; + bright0 = "686868"; + bright1 = "F07178"; + bright2 = "C2D94C"; + bright3 = "FFB454"; + bright4 = "59C2FF"; + bright5 = "FFEE99"; + bright6 = "95E6CB"; + bright7 = "FFFFFF"; + }; + }; + }; + + + + wayland.windowManager.sway = { + enable = true; + + config = { + modifier = "Mod4"; + focus.followMouse = false; + + input = { + "17498:8800:KBDFans_DZ60" = { + xkb_layout = "eu"; + }; + #"1133:49295:Logitech_G403_HERO_Gaming_Mouse" = { + # pointer_accel = "1"; + #}; + }; + output = { + "*".bg = "/home/fleaz/Downloads/spongebob.jpg fill"; + "DVI-D-1" = { + mode = "1920x1200"; + transform = "270"; + position = "0,0"; + }; + "HDMI-A-1" = { + mode = "3840x2160"; + scale = "1.2"; + position = "1200,0"; + }; + "DP-1" = { + mode = "3840x2160"; + scale = "1.2"; + position = "4400,0"; + }; + + }; + gaps = { + inner = 8; + }; + window.border = 0; + workspaceAutoBackAndForth = true; + terminal = "foot"; + + bars = [{ + command = "${pkgs.waybar}/bin/waybar"; + }]; + + keybindings = + let + mod = "Mod4"; + in + { + "${mod}+Return" = "exec foot"; + "${mod}+p" = "exec ${pkgs.wofi}/bin/wofi --show drun"; + + "${mod}+Shift+c" = "reload"; + "${mod}+Shift+q" = "kill"; + "${mod}+Shift+e" = "exec swaynag -t warning -m 'You pressed the exit shortcut. Do you really want to exit sway? This will end your Wayland session.' -b 'Yes, exit sway' 'swaymsg exit'"; + "${mod}+x" = "move workspace to output right"; + + "${mod}+h" = "focus left"; + "${mod}+j" = "focus down"; + "${mod}+k" = "focus up"; + "${mod}+l" = "focus right"; + + "${mod}+Shift+h" = "move left"; + "${mod}+Shift+j" = "move down"; + "${mod}+Shift+k" = "move up"; + "${mod}+Shift+l" = "move right"; + + "${mod}+s" = "split v"; + "${mod}+w" = "split h"; + + "${mod}+t" = "layout tabbed"; + "${mod}+r" = "mode resize"; + + "${mod}+f" = "fullscreen toggle"; + "${mod}+Shift+space" = "floating toggle"; + + "${mod}+1" = "workspace 1"; + "${mod}+2" = "workspace 2"; + "${mod}+3" = "workspace 3"; + "${mod}+4" = "workspace 4"; + "${mod}+5" = "workspace 5"; + "${mod}+6" = "workspace 6"; + "${mod}+7" = "workspace 7"; + "${mod}+8" = "workspace 8"; + "${mod}+9" = "workspace 9"; + "${mod}+0" = "workspace 10"; + + "${mod}+Shift+1" = "move container to workspace 1"; + "${mod}+Shift+2" = "move container to workspace 2"; + "${mod}+Shift+3" = "move container to workspace 3"; + "${mod}+Shift+4" = "move container to workspace 4"; + "${mod}+Shift+5" = "move container to workspace 5"; + "${mod}+Shift+6" = "move container to workspace 6"; + "${mod}+Shift+7" = "move container to workspace 7"; + "${mod}+Shift+8" = "move container to workspace 8"; + "${mod}+Shift+9" = "move container to workspace 9"; + "${mod}+Shift+0" = "move container to workspace 10"; + + + # Multimedia Keys + "XF86AudioMute" = "exec ${pkgs.pulseaudio}/bin/pactl set-sink-mute @DEFAULT_SINK@ toggle"; + "XF86AudioRaiseVolume" = "exec ${pkgs.pulseaudio}/bin/pactl set-sink-volume @DEFAULT_SINK@ +5%"; + "XF86AudioLowerVolume" = "exec ${pkgs.pulseaudio}/bin/pactl set-sink-volume @DEFAULT_SINK@ -5%"; + }; + + }; + }; + }; + + # 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; + + # This value determines the NixOS release from which the default + # settings for stateful data, like file locations and database versions + # on your system were taken. It‘s perfectly fine and recommended to leave + # this value at the release version of the first install of this system. + # Before changing this value read the documentation for this option + # (e.g. man configuration.nix or on https://nixos.org/nixos/options.html). + system.stateVersion = "21.11"; # Did you read the comment? + +} + diff --git a/machines/jimbo/hardware-configuration.nix b/machines/jimbo/hardware-configuration.nix new file mode 100644 index 0000000..cc7c7f3 --- /dev/null +++ b/machines/jimbo/hardware-configuration.nix @@ -0,0 +1,39 @@ +# 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 = [ "xhci_pci" "nvme" "usb_storage" "usbhid" "sd_mod" "rtsx_pci_sdmmc" ]; + boot.initrd.kernelModules = [ ]; + boot.kernelModules = [ "kvm-intel" ]; + boot.extraModulePackages = [ ]; + + fileSystems."/" = + { + device = "/dev/disk/by-uuid/5c29ff32-7186-4bfb-91ba-4bd14a72c7fa"; + fsType = "ext4"; + }; + + boot.initrd.luks.devices."cryptroot".device = "/dev/disk/by-uuid/55265801-0adc-4cde-9e88-a6c4a2a6c8c1"; + + fileSystems."/boot/efi" = + { + device = "/dev/disk/by-uuid/A809-ABDC"; + fsType = "vfat"; + }; + + swapDevices = + [{ + device = "/dev/disk/by-partuuid/706747af-4066-461f-8eac-06339c68f0db"; + randomEncryption = true; + }]; + + powerManagement.cpuFreqGovernor = lib.mkDefault "powersave"; + hardware.cpu.intel.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware; +}