diff options
| -rw-r--r-- | flake.nix | 9 | ||||
| -rw-r--r-- | machines/bosco/configuration.nix | 118 | ||||
| -rw-r--r-- | machines/bosco/hardware-configuration.nix | 35 | ||||
| -rw-r--r-- | machines/zenbook/configuration.nix | 7 | ||||
| -rw-r--r-- | modules/nixos/services.nix | 5 | ||||
| -rw-r--r-- | modules/nixos/sway.nix | 60 | ||||
| -rw-r--r-- | modules/nixos/system-packages.nix | 45 | ||||
| -rw-r--r-- | modules/user-profiles/defin.nix | 12 |
8 files changed, 240 insertions, 51 deletions
@@ -234,7 +234,16 @@ ]; # specialArgs = { inherit inputs; }; }; + bosco = nixpkgs.lib.nixosSystem { + modules = [ + ./machines/bosco/configuration.nix + ./machines/bosco/hardware-configuration.nix + ./modules/nixos/nix-common.nix + ./modules/nixos/environment.nix + ./modules/nixos/system-packages.nix + ]; + }; khad = nixpkgs.lib.nixosSystem { modules = [ ./machines/khad/configuration.nix diff --git a/machines/bosco/configuration.nix b/machines/bosco/configuration.nix new file mode 100644 index 0000000..46aebce --- /dev/null +++ b/machines/bosco/configuration.nix @@ -0,0 +1,118 @@ +# 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 = "bosco"; # Define your hostname. + # 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 = "US/Mountain"; + + # 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"; + # useXkbConfig = true; # use xkbOptions in tty. + # }; + + # Enable the X11 windowing system. + services.xserver.enable = true; + + + # Enable the Plasma 5 Desktop Environment. + services.xserver.displayManager.sddm.enable = true; + services.xserver.desktopManager.plasma5.enable = true; + + + # Configure keymap in X11 + # services.xserver.layout = "us"; + # services.xserver.xkbOptions = "eurosign:e,caps:escape"; + + # Enable CUPS to print documents. + # services.printing.enable = true; + + # Enable sound. + # sound.enable = true; + # hardware.pulseaudio.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.defin = { + isNormalUser = true; + extraGroups = [ "wheel" "builders" ]; # Enable ‘sudo’ for the user. + hashedPassword = "$6$UljPNAdxZ22lP3Bc$8VaEAacZxtXM3Zji2IA7Jf5fXs9pFnAVQff1d8IbfFOKCvjibceyopOAjRXa8lXtpOSJgPW1OO1dzOspqhWnz0"; + shell = pkgs.nushell; + packages = with pkgs; [ + nushell + tree + ]; + openssh.authorizedKeys.keyFiles = [ + (builtins.fetchurl { + url = "https://gitlab.com/dFinlinson.keys"; + sha256 = "05mmvw190j6dp756bsqp3ssjyv2hq6r8cpc03wzvzgf2bhdg4dvb"; + }) + ]; + }; + + # List packages installed in system profile. To search, run: + # $ nix search wget + environment.systemPackages = with pkgs; [ + helix # Do not forget to add an editor to edit configuration.nix! The Nano editor is also installed by default. + 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 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 = "23.05"; # Did you read the comment? + +} + diff --git a/machines/bosco/hardware-configuration.nix b/machines/bosco/hardware-configuration.nix new file mode 100644 index 0000000..f768a3f --- /dev/null +++ b/machines/bosco/hardware-configuration.nix @@ -0,0 +1,35 @@ +# 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 = [ "ehci_pci" "megaraid_sas" "usb_storage" "usbhid" "sd_mod" ]; + boot.initrd.kernelModules = [ ]; + boot.kernelModules = [ "kvm-intel" ]; + boot.extraModulePackages = [ ]; + + fileSystems."/" = + { device = "/dev/disk/by-uuid/9fb0c7c8-8ee8-48ca-bd3a-3246838d3780"; + fsType = "btrfs"; + }; + + swapDevices = [ ]; + + # 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.<interface>.useDHCP`. + networking.useDHCP = lib.mkDefault true; + # networking.interfaces.eno1.useDHCP = lib.mkDefault true; + # networking.interfaces.eno2.useDHCP = lib.mkDefault true; + # networking.interfaces.eno3.useDHCP = lib.mkDefault true; + # networking.interfaces.eno4.useDHCP = lib.mkDefault true; + + nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux"; + hardware.cpu.intel.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware; +} diff --git a/machines/zenbook/configuration.nix b/machines/zenbook/configuration.nix index 77e7fe6..23947f5 100644 --- a/machines/zenbook/configuration.nix +++ b/machines/zenbook/configuration.nix @@ -19,6 +19,13 @@ environment.shellInit = ''export NIXPATH="/nix/var/nix/profiles/per-user/$USER/channels:nixos-config=/etc/nixos/machines/zenbook/configuration.nix"''; + services.xserver.displayManager.sddm = { + enableHidpi = true; + settings = { + serverArguments = "-nolisten tcp -dpi 170"; + }; + }; + networking = { firewall = { # Open ports in the firewall. diff --git a/modules/nixos/services.nix b/modules/nixos/services.nix index c0cd4e8..6ad8594 100644 --- a/modules/nixos/services.nix +++ b/modules/nixos/services.nix @@ -24,7 +24,10 @@ # Enable the Plasma 5 Desktop Environment. desktopManager.plasma5.enable = true; displayManager = { - sddm.enable = true; + sddm = { + enable = true; + autoNumlock = true; + }; # defaultSession = "plasmawayland"; }; }; diff --git a/modules/nixos/sway.nix b/modules/nixos/sway.nix index f2f616c..f431759 100644 --- a/modules/nixos/sway.nix +++ b/modules/nixos/sway.nix @@ -1,6 +1,66 @@ { config, pkgs, lib, ... }: +let + # bash script to let dbus know about important env variables and + # propagate them to relevent services run at the end of sway config + # see + # https://github.com/emersion/xdg-desktop-portal-wlr/wiki/"It-doesn't-work"-Troubleshooting-Checklist + # note: this is pretty much the same as /etc/sway/config.d/nixos.conf but also restarts + # some user services to make sure they have the correct environment variables + dbus-sway-environment = pkgs.writeTextFile { + name = "dbus-sway-environment"; + destination = "/bin/dbus-sway-environment"; + executable = true; + + text = '' + dbus-update-activation-environment --systemd WAYLAND_DISPLAY XDG_CURRENT_DESKTOP=sway + systemctl --user stop pipewire pipewire-media-session xdg-desktop-portal xdg-desktop-portal-wlr + systemctl --user start pipewire pipewire-media-session xdg-desktop-portal xdg-desktop-portal-wlr + ''; + }; + + # currently, there is some friction between sway and gtk: + # https://github.com/swaywm/sway/wiki/GTK-3-settings-on-Wayland + # the suggested way to set gtk settings is with gsettings + # for gsettings to work, we need to tell it where the schemas are + # using the XDG_DATA_DIR environment variable + # run at the end of sway config + configure-gtk = pkgs.writeTextFile { + name = "configure-gtk"; + destination = "/bin/configure-gtk"; + executable = true; + text = let + schema = pkgs.gsettings-desktop-schemas; + datadir = "${schema}/share/gsettings-schemas/${schema.name}"; + in '' + export XDG_DATA_DIRS=${datadir}:$XDG_DATA_DIRS + gnome_schema=org.gnome.desktop.interface + gsettings set $gnome_schema gtk-theme 'Dracula' + ''; + }; + +in + { environment.systemPackages = with pkgs; [ + #For sway + alacritty # gpu accelerated terminal + dbus-sway-environment + configure-gtk + wayland + waybar + xdg-utils # for opening default programs when clicking links + glib # gsettings + dracula-theme # gtk theme + gnome3.adwaita-icon-theme # default gnome cursors + swaylock + swayidle + grim # screenshot functionality + slurp # screenshot functionality + bemenu # wayland clone of dmenu + mako # notification system developed by swaywm maintainer + wdisplays # tool to configure displays + wofi + (writeShellScriptBin "rofi" "exec -a $0 ${wofi}/bin/wofi $@") #Lets qutebrowser select passwords ]; # xdg-desktop-portal works by exposing a series of D-Bus interfaces diff --git a/modules/nixos/system-packages.nix b/modules/nixos/system-packages.nix index 6c7f9f0..dc73fb8 100644 --- a/modules/nixos/system-packages.nix +++ b/modules/nixos/system-packages.nix @@ -1,47 +1,4 @@ -{ pkgs, ...}: -let - - # bash script to let dbus know about important env variables and - # propagate them to relevent services run at the end of sway config - # see - # https://github.com/emersion/xdg-desktop-portal-wlr/wiki/"It-doesn't-work"-Troubleshooting-Checklist - # note: this is pretty much the same as /etc/sway/config.d/nixos.conf but also restarts - # some user services to make sure they have the correct environment variables - dbus-sway-environment = pkgs.writeTextFile { - name = "dbus-sway-environment"; - destination = "/bin/dbus-sway-environment"; - executable = true; - - text = '' - dbus-update-activation-environment --systemd WAYLAND_DISPLAY XDG_CURRENT_DESKTOP=sway - systemctl --user stop pipewire pipewire-media-session xdg-desktop-portal xdg-desktop-portal-wlr - systemctl --user start pipewire pipewire-media-session xdg-desktop-portal xdg-desktop-portal-wlr - ''; - }; - - # currently, there is some friction between sway and gtk: - # https://github.com/swaywm/sway/wiki/GTK-3-settings-on-Wayland - # the suggested way to set gtk settings is with gsettings - # for gsettings to work, we need to tell it where the schemas are - # using the XDG_DATA_DIR environment variable - # run at the end of sway config - configure-gtk = pkgs.writeTextFile { - name = "configure-gtk"; - destination = "/bin/configure-gtk"; - executable = true; - text = let - schema = pkgs.gsettings-desktop-schemas; - datadir = "${schema}/share/gsettings-schemas/${schema.name}"; - in '' - export XDG_DATA_DIRS=${datadir}:$XDG_DATA_DIRS - gnome_schema=org.gnome.desktop.interface - gsettings set $gnome_schema gtk-theme 'Dracula' - ''; - }; - -in - -{ +{ pkgs, ...}: { programs.partition-manager.enable = true; environment.systemPackages = with pkgs; [ #For root diff --git a/modules/user-profiles/defin.nix b/modules/user-profiles/defin.nix index 36b3cbc..58e496e 100644 --- a/modules/user-profiles/defin.nix +++ b/modules/user-profiles/defin.nix @@ -11,12 +11,12 @@ shell = pkgs.nushell; hashedPassword = "$6$UljPNAdxZ22lP3Bc$8VaEAacZxtXM3Zji2IA7Jf5fXs9pFnAVQff1d8IbfFOKCvjibceyopOAjRXa8lXtpOSJgPW1OO1dzOspqhWnz0"; - # oppenssh.authorizedKeys.keyFiles = [ - # (builtins.fetchurl { - # url = "https://gitlab.com/dFinlinson.keys"; - # sha256 = "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"; - # }) - # ]; + openssh.authorizedKeys.keyFiles = [ + (builtins.fetchurl { + url = "https://gitlab.com/dFinlinson.keys"; + sha256 = "05mmvw190j6dp756bsqp3ssjyv2hq6r8cpc03wzvzgf2bhdg4dvb"; + }) + ]; }; }; |
