From daece86e425dea7f5888f67f83657edf01eee401 Mon Sep 17 00:00:00 2001 From: Johannes Hendrik Gerard van der Weide Date: Mon, 6 Nov 2023 20:14:02 +0100 Subject: [PATCH] The godconfig dear god --- Hosts/hertog-laptop/configuration.nix | 11 ++ .../hertog-laptop/hardware-configuration.nix | 40 +++++++ Hosts/hertog-laptop/packages.nix | 30 ++++++ Hosts/hertog-server/configuration.nix | 28 +++++ .../hertog-server/hardware-configuration.nix | 43 ++++++++ Hosts/hertog-server/packages.nix | 12 +++ Programs/firefox.nix | 13 +++ Programs/git.nix | 11 ++ Programs/helix.nix | 13 +++ Programs/hyfetch.nix | 15 +++ Programs/neovim.nix | 27 +++++ Programs/obs.nix | 9 ++ Programs/zsh.nix | 38 +++++++ {services => Services}/nextcloud.nix | 0 {services => Services}/nginx.nix | 2 +- {services => Services}/owncast.nix | 0 {services => Services}/ssh.nix | 0 {services => Services}/tt-rss.nix | 2 +- {services => Services}/uptime-kuma.nix | 0 {sites => Sites}/blog.hermitcollective.net | 2 +- {sites => Sites}/hermitcollective.net | 4 +- {sites => Sites}/hertog.hermitcollective.net | 2 +- System/appliances.nix | 12 +++ System/audio.nix | 20 ++++ System/configuration.nix | 39 +++++++ System/getty.nix | 8 ++ System/gnome.nix | 22 ++++ System/packages.nix | 39 +++++++ Users/Hertog/firefox.nix | 13 +++ Users/Hertog/git.nix | 11 ++ Users/Hertog/helix.nix | 13 +++ Users/Hertog/homeFull.nix | 66 ++++++++++++ Users/Hertog/homeMinimal.nix | 22 ++++ Users/Hertog/hyfetch.nix | 15 +++ Users/Hertog/neovim.nix | 27 +++++ Users/Hertog/obs.nix | 9 ++ Users/Hertog/user.nix | 14 +++ Users/Hertog/zsh.nix | 38 +++++++ Users/Sara/git.nix | 11 ++ Users/Sara/homeFull.nix | 43 ++++++++ Users/Sara/homeMinimal.nix | 22 ++++ Users/Sara/hyfetch.nix | 15 +++ Users/Sara/neovim.nix | 27 +++++ Users/Sara/user.nix | 14 +++ Users/Sara/zsh.nix | 38 +++++++ configuration.nix | 79 -------------- flake.lock | 48 +++++++++ flake.nix | 100 ++++++++++++++++++ users/hertog.nix | 10 -- users/sara.nix | 12 --- 50 files changed, 982 insertions(+), 107 deletions(-) create mode 100644 Hosts/hertog-laptop/configuration.nix create mode 100644 Hosts/hertog-laptop/hardware-configuration.nix create mode 100644 Hosts/hertog-laptop/packages.nix create mode 100644 Hosts/hertog-server/configuration.nix create mode 100644 Hosts/hertog-server/hardware-configuration.nix create mode 100644 Hosts/hertog-server/packages.nix create mode 100644 Programs/firefox.nix create mode 100644 Programs/git.nix create mode 100644 Programs/helix.nix create mode 100644 Programs/hyfetch.nix create mode 100644 Programs/neovim.nix create mode 100644 Programs/obs.nix create mode 100644 Programs/zsh.nix rename {services => Services}/nextcloud.nix (100%) rename {services => Services}/nginx.nix (98%) rename {services => Services}/owncast.nix (100%) rename {services => Services}/ssh.nix (100%) rename {services => Services}/tt-rss.nix (99%) rename {services => Services}/uptime-kuma.nix (100%) rename {sites => Sites}/blog.hermitcollective.net (98%) rename {sites => Sites}/hermitcollective.net (76%) rename {sites => Sites}/hertog.hermitcollective.net (98%) create mode 100644 System/appliances.nix create mode 100644 System/audio.nix create mode 100644 System/configuration.nix create mode 100644 System/getty.nix create mode 100644 System/gnome.nix create mode 100644 System/packages.nix create mode 100644 Users/Hertog/firefox.nix create mode 100644 Users/Hertog/git.nix create mode 100644 Users/Hertog/helix.nix create mode 100644 Users/Hertog/homeFull.nix create mode 100644 Users/Hertog/homeMinimal.nix create mode 100644 Users/Hertog/hyfetch.nix create mode 100644 Users/Hertog/neovim.nix create mode 100644 Users/Hertog/obs.nix create mode 100644 Users/Hertog/user.nix create mode 100644 Users/Hertog/zsh.nix create mode 100644 Users/Sara/git.nix create mode 100644 Users/Sara/homeFull.nix create mode 100644 Users/Sara/homeMinimal.nix create mode 100644 Users/Sara/hyfetch.nix create mode 100644 Users/Sara/neovim.nix create mode 100644 Users/Sara/user.nix create mode 100644 Users/Sara/zsh.nix delete mode 100644 configuration.nix create mode 100644 flake.lock create mode 100644 flake.nix delete mode 100644 users/hertog.nix delete mode 100644 users/sara.nix diff --git a/Hosts/hertog-laptop/configuration.nix b/Hosts/hertog-laptop/configuration.nix new file mode 100644 index 0000000..b237d2e --- /dev/null +++ b/Hosts/hertog-laptop/configuration.nix @@ -0,0 +1,11 @@ +# This is your system's configuration file. +# Use this to configure your system environment (it replaces /etc/nixos/configuration.nix) +{ outputs, lib, config, pkgs, ... }: + +{ + # Set hostname + networking.hostName = "puter"; + + # https://nixos.wiki/wiki/FAQ/When_do_I_update_stateVersion + system.stateVersion = "23.05"; +} diff --git a/Hosts/hertog-laptop/hardware-configuration.nix b/Hosts/hertog-laptop/hardware-configuration.nix new file mode 100644 index 0000000..29cd230 --- /dev/null +++ b/Hosts/hertog-laptop/hardware-configuration.nix @@ -0,0 +1,40 @@ +# 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" "thunderbolt" "nvme" ]; + boot.initrd.kernelModules = [ ]; + boot.kernelModules = [ "kvm-intel" ]; + boot.extraModulePackages = [ ]; + + fileSystems."/" = + { device = "/dev/disk/by-uuid/d42a3a57-a48e-442c-8c39-eaa4d908c655"; + fsType = "ext4"; + }; + + boot.initrd.luks.devices."luks-528cf9f0-1010-4643-b33d-4556cbbd8e12".device = "/dev/disk/by-uuid/528cf9f0-1010-4643-b33d-4556cbbd8e12"; + + fileSystems."/boot" = + { device = "/dev/disk/by-uuid/42F5-ED7B"; + fsType = "vfat"; + }; + + 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..useDHCP`. + networking.useDHCP = lib.mkDefault true; + # networking.interfaces.wlp170s0.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; +} diff --git a/Hosts/hertog-laptop/packages.nix b/Hosts/hertog-laptop/packages.nix new file mode 100644 index 0000000..9651eb4 --- /dev/null +++ b/Hosts/hertog-laptop/packages.nix @@ -0,0 +1,30 @@ +{ config, pkgs, inputs, ... }: + +{ + # Allow unfree packages + nixpkgs.config = { + permittedInsecurePackages = [ + "electron-24.8.6" + "electron-22.3.27" + ]; + }; + # Fonts + fonts.packages = [ + pkgs.ibm-plex + ]; + environment = { + # Systemwide installed packages + systemPackages = with pkgs; [ + # System + gnome.gnome-control-center + gnome.nautilus + gnome.file-roller + alacritty + gnome-text-editor + warp + tor-browser-bundle-bin + # Utils + popsicle + ]; + }; +} diff --git a/Hosts/hertog-server/configuration.nix b/Hosts/hertog-server/configuration.nix new file mode 100644 index 0000000..d25bb1c --- /dev/null +++ b/Hosts/hertog-server/configuration.nix @@ -0,0 +1,28 @@ +{ config, pkgs, ... }: + +{ + networking.hostName = "HermitCollective"; + networking.domain = "hermitcollective.net"; + + # Configure keymap in X11 + services.xserver = { + layout = "us"; + xkbVariant = ""; + }; + + # Accept ACME terms + security.acme.acceptTerms = true; + security.acme.defaults.email = "hertog@fsfe.org"; + + # Open ports in the firewall. + networking.firewall.allowedTCPPorts = [ 22 80 443 8080 8181 1935 ]; + # networking.firewall.allowedUDPPorts = [ ... ]; + + # 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/Hosts/hertog-server/hardware-configuration.nix b/Hosts/hertog-server/hardware-configuration.nix new file mode 100644 index 0000000..9c87434 --- /dev/null +++ b/Hosts/hertog-server/hardware-configuration.nix @@ -0,0 +1,43 @@ +# 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" "ahci" "sd_mod" ]; + boot.initrd.kernelModules = [ ]; + boot.kernelModules = [ ]; + boot.extraModulePackages = [ ]; + + fileSystems."/" = + { device = "/dev/disk/by-uuid/94c7af9d-2a39-4ae1-9447-91b1bacec334"; + fsType = "ext4"; + }; + + fileSystems."/boot" = + { device = "/dev/disk/by-uuid/B7A8-E52E"; + fsType = "vfat"; + }; + + fileSystems."/mnt/sdb" = + { device = "/dev/disk/by-uuid/e5d63d88-bbc6-4532-9636-69587868ca6b"; + fsType = "ext4"; + }; + + 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..useDHCP`. + networking.useDHCP = lib.mkDefault true; + # networking.interfaces.enp6s0.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; +} diff --git a/Hosts/hertog-server/packages.nix b/Hosts/hertog-server/packages.nix new file mode 100644 index 0000000..480e5c3 --- /dev/null +++ b/Hosts/hertog-server/packages.nix @@ -0,0 +1,12 @@ +{ config, pkgs, inputs, ... }: + +{ + environment = { + # Systemwide installed packages + systemPackages = with pkgs; [ + iftop + openssl + git + ]; + }; +} diff --git a/Programs/firefox.nix b/Programs/firefox.nix new file mode 100644 index 0000000..df70715 --- /dev/null +++ b/Programs/firefox.nix @@ -0,0 +1,13 @@ +{ config, pkgs, ... }: + +{ + programs.firefox = { + enable = true; + profiles.hertog = { + isDefault = true; + name = "Hertog"; + path = "/home/hertog/.mozilla/firefox/7p5jc0z4.default"; + + }; + }; +} diff --git a/Programs/git.nix b/Programs/git.nix new file mode 100644 index 0000000..e7afad7 --- /dev/null +++ b/Programs/git.nix @@ -0,0 +1,11 @@ +{ pkgs, ... }: + +{ + # Git configuration + programs.git = { + enable = true; + userName = "Johannes Hendrik Gerard van der Weide"; + userEmail = "hertog@fsfe.org"; + }; +} + diff --git a/Programs/helix.nix b/Programs/helix.nix new file mode 100644 index 0000000..66f1cbf --- /dev/null +++ b/Programs/helix.nix @@ -0,0 +1,13 @@ +{ pkgs, ... }: + +{ + # Helix configuration + programs.helix = { + enable = true; + defaultEditor = false; + settings = { + theme = "adwaita-dark"; + }; + }; +} + diff --git a/Programs/hyfetch.nix b/Programs/hyfetch.nix new file mode 100644 index 0000000..e1d530d --- /dev/null +++ b/Programs/hyfetch.nix @@ -0,0 +1,15 @@ +{ pkgs, config, ... }: + +{ + # Hyfetch config :3 + programs.hyfetch = { + enable = true; + settings = { + preset = "bisexual"; + mode = "rgb"; + color_align = { + mode = "horizontal"; + }; + }; + }; +} diff --git a/Programs/neovim.nix b/Programs/neovim.nix new file mode 100644 index 0000000..952c9b9 --- /dev/null +++ b/Programs/neovim.nix @@ -0,0 +1,27 @@ +{ config, pkgs, ... }: + +{ + programs.neovim = { + enable = true; + defaultEditor = true; + vimAlias = true; + coc = { + enable = true; + }; + # VimRC + extraConfig = '' + set background=dark + colorscheme PaperColor + ''; + extraLuaConfig = '' + print("Welcome to Vim Hertog! :3") + ''; + # Plugins + plugins = with pkgs.vimPlugins; [ + vim-nix + nvim-treesitter-parsers.cpp + papercolor-theme + ]; + }; +} + diff --git a/Programs/obs.nix b/Programs/obs.nix new file mode 100644 index 0000000..0389809 --- /dev/null +++ b/Programs/obs.nix @@ -0,0 +1,9 @@ +{ pkgs, ... }: + +{ + # OBS studio configuration + programs.obs-studio = { + enable = true; + }; +} + diff --git a/Programs/zsh.nix b/Programs/zsh.nix new file mode 100644 index 0000000..b83b08e --- /dev/null +++ b/Programs/zsh.nix @@ -0,0 +1,38 @@ +{ pkgs, ... }: + +{ + # Zsh config + programs.zsh = { + enable = true; + initExtra = " + hyfetch + "; + shellAliases = { + ll = "ls -l"; + please = "sudo"; + update = "sudo nixos-rebuild switch --flake /etc/nixos/"; + }; + plugins = [ + { + name = "zsh-nix-shell"; + file = "nix-shell.plugin.zsh"; + src = pkgs.fetchFromGitHub { + owner = "chisui"; + repo = "zsh-nix-shell"; + rev = "v0.7.0"; + sha256 = "149zh2rm59blr2q458a5irkfh82y3dwdich60s9670kl3cl5h2m1"; + }; + } + ]; + oh-my-zsh = { + enable = true; + plugins = [ + "git" + "thefuck" + "sudo" + ]; + theme = "mh"; + }; + }; +} + diff --git a/services/nextcloud.nix b/Services/nextcloud.nix similarity index 100% rename from services/nextcloud.nix rename to Services/nextcloud.nix diff --git a/services/nginx.nix b/Services/nginx.nix similarity index 98% rename from services/nginx.nix rename to Services/nginx.nix index 5138b77..3c2e316 100644 --- a/services/nginx.nix +++ b/Services/nginx.nix @@ -8,4 +8,4 @@ recommendedProxySettings = true; recommendedTlsSettings = true; }; -} +} diff --git a/services/owncast.nix b/Services/owncast.nix similarity index 100% rename from services/owncast.nix rename to Services/owncast.nix diff --git a/services/ssh.nix b/Services/ssh.nix similarity index 100% rename from services/ssh.nix rename to Services/ssh.nix diff --git a/services/tt-rss.nix b/Services/tt-rss.nix similarity index 99% rename from services/tt-rss.nix rename to Services/tt-rss.nix index 3948f7c..4a893bb 100644 --- a/services/tt-rss.nix +++ b/Services/tt-rss.nix @@ -26,7 +26,7 @@ tt_rss-users tt_rss tt_rss ''; }; - + services.nginx.virtualHosts."feeds.hermitcollective.net" = { # TT-RSS hostname enableACME = true; # Use ACME certs forceSSL = true; # Force SSL diff --git a/services/uptime-kuma.nix b/Services/uptime-kuma.nix similarity index 100% rename from services/uptime-kuma.nix rename to Services/uptime-kuma.nix diff --git a/sites/blog.hermitcollective.net b/Sites/blog.hermitcollective.net similarity index 98% rename from sites/blog.hermitcollective.net rename to Sites/blog.hermitcollective.net index f7ae76c..ce41e4a 100644 --- a/sites/blog.hermitcollective.net +++ b/Sites/blog.hermitcollective.net @@ -7,4 +7,4 @@ enableACME = true; root = "/var/www/blog.hermitcollective.net/docs"; }; -} +} diff --git a/sites/hermitcollective.net b/Sites/hermitcollective.net similarity index 76% rename from sites/hermitcollective.net rename to Sites/hermitcollective.net index 2fed9c9..494ef7e 100644 --- a/sites/hermitcollective.net +++ b/Sites/hermitcollective.net @@ -5,6 +5,6 @@ services.nginx.virtualHosts."hermitcollective.net" = { forceSSL = true; enableACME = true; - root = "/var/www/hermitcollective.net"; + root = "/var/www/hermitcollective.net/docs"; }; -} +} diff --git a/sites/hertog.hermitcollective.net b/Sites/hertog.hermitcollective.net similarity index 98% rename from sites/hertog.hermitcollective.net rename to Sites/hertog.hermitcollective.net index ca04d04..cecf6b5 100644 --- a/sites/hertog.hermitcollective.net +++ b/Sites/hertog.hermitcollective.net @@ -7,4 +7,4 @@ enableACME = true; root = "/var/www/hertog.hermitcollective.net"; }; -} +} diff --git a/System/appliances.nix b/System/appliances.nix new file mode 100644 index 0000000..c000d79 --- /dev/null +++ b/System/appliances.nix @@ -0,0 +1,12 @@ +{ config, ... }: + +{ + # Enable support for flashing zsa keyboards and the flipperzero their firmware + hardware = { + keyboard.zsa.enable = true; + flipperzero.enable = true; + }; + + # Enable CUPS to print documents. + services.printing.enable = true; +} diff --git a/System/audio.nix b/System/audio.nix new file mode 100644 index 0000000..549eb97 --- /dev/null +++ b/System/audio.nix @@ -0,0 +1,20 @@ +{ config, ... }: + +{ + # Enable sound with pipewire. + sound.enable = true; + hardware.pulseaudio.enable = false; + security.rtkit.enable = true; + services.pipewire = { + enable = true; + alsa.enable = true; + alsa.support32Bit = true; + pulse.enable = true; + # If you want to use JACK applications, uncomment this + #jack.enable = true; + + # use the example session manager (no others are packaged yet so this is enabled by default, + # no need to redefine it in your config for now) + #media-session.enable = true; + }; +} diff --git a/System/configuration.nix b/System/configuration.nix new file mode 100644 index 0000000..39cd5e1 --- /dev/null +++ b/System/configuration.nix @@ -0,0 +1,39 @@ +# This is your system's configuration file. +# Use this to configure your system environment (it replaces /etc/nixos/configuration.nix) +{ outputs, lib, config, pkgs, ... }: + +{ + nix = { + settings = { + # Enable flakes and new 'nix' command + experimental-features = "nix-command flakes"; + # Deduplicate and optimize nix store + auto-optimise-store = true; + }; + }; + + # Bootloader. + boot.loader.efi.canTouchEfiVariables = true; + boot.loader.systemd-boot = { + enable = true; + editor = false; + }; + + # Set your time zone. + time.timeZone = "Europe/Amsterdam"; + + # Select internationalisation properties. + i18n.defaultLocale = "nl_NL.UTF-8"; + + i18n.extraLocaleSettings = { + LC_ADDRESS = "nl_NL.UTF-8"; + LC_IDENTIFICATION = "nl_NL.UTF-8"; + LC_MEASUREMENT = "nl_NL.UTF-8"; + LC_MONETARY = "nl_NL.UTF-8"; + LC_NAME = "nl_NL.UTF-8"; + LC_NUMERIC = "nl_NL.UTF-8"; + LC_PAPER = "nl_NL.UTF-8"; + LC_TELEPHONE = "nl_NL.UTF-8"; + LC_TIME = "nl_NL.UTF-8"; + }; +} diff --git a/System/getty.nix b/System/getty.nix new file mode 100644 index 0000000..d8f638e --- /dev/null +++ b/System/getty.nix @@ -0,0 +1,8 @@ +{ config, lib, ... }: + +{ + services.getty = { + helpLine = ""; + greetingLine = "Welcome hermit!"; + }; +} diff --git a/System/gnome.nix b/System/gnome.nix new file mode 100644 index 0000000..ecc98ec --- /dev/null +++ b/System/gnome.nix @@ -0,0 +1,22 @@ +{ config, pkgs, ... }: + +{ + # Enable the X11 windowing system. + services.xserver = { + enable = true; + layout = "nl"; + xkbVariant = "us"; + libinput.enable = true; + displayManager.gdm.enable = true; + desktopManager = { + gnome.enable = true; + xterm.enable = false; + }; + }; + + # Disable gnome default apps while keeping the gnome settings daemon + services.gnome = { + core-utilities.enable = false; + }; + services.udev.packages = with pkgs; [ gnome.gnome-settings-daemon ]; +} diff --git a/System/packages.nix b/System/packages.nix new file mode 100644 index 0000000..1b720f4 --- /dev/null +++ b/System/packages.nix @@ -0,0 +1,39 @@ +{ config, pkgs, inputs, ... }: + +{ + # Allow unfree packages + nixpkgs.config = { + allowUnfree = true; + }; + # Set zsh (config is still per user) + programs.zsh.enable = true; + users.defaultUserShell = pkgs.zsh; + environment = { + # Default shell + shells = [ pkgs.zsh ]; + # Other defaults + variables = { + EDITOR = "vi"; + SYSTEMD_EDITOR = "vi"; + VISUAL = "vi"; + }; + # Nixos default installed packages (this is set to get rid of nano >:3 ) + defaultPackages = with pkgs; [ + nvi + perl + rsync + strace + ]; + # Systemwide installed packages + systemPackages = with pkgs; [ + ranger + parted + util-linux + bottom + curl + wget + gitui + lynx + ]; + }; +} diff --git a/Users/Hertog/firefox.nix b/Users/Hertog/firefox.nix new file mode 100644 index 0000000..df70715 --- /dev/null +++ b/Users/Hertog/firefox.nix @@ -0,0 +1,13 @@ +{ config, pkgs, ... }: + +{ + programs.firefox = { + enable = true; + profiles.hertog = { + isDefault = true; + name = "Hertog"; + path = "/home/hertog/.mozilla/firefox/7p5jc0z4.default"; + + }; + }; +} diff --git a/Users/Hertog/git.nix b/Users/Hertog/git.nix new file mode 100644 index 0000000..e7afad7 --- /dev/null +++ b/Users/Hertog/git.nix @@ -0,0 +1,11 @@ +{ pkgs, ... }: + +{ + # Git configuration + programs.git = { + enable = true; + userName = "Johannes Hendrik Gerard van der Weide"; + userEmail = "hertog@fsfe.org"; + }; +} + diff --git a/Users/Hertog/helix.nix b/Users/Hertog/helix.nix new file mode 100644 index 0000000..66f1cbf --- /dev/null +++ b/Users/Hertog/helix.nix @@ -0,0 +1,13 @@ +{ pkgs, ... }: + +{ + # Helix configuration + programs.helix = { + enable = true; + defaultEditor = false; + settings = { + theme = "adwaita-dark"; + }; + }; +} + diff --git a/Users/Hertog/homeFull.nix b/Users/Hertog/homeFull.nix new file mode 100644 index 0000000..ea9148a --- /dev/null +++ b/Users/Hertog/homeFull.nix @@ -0,0 +1,66 @@ +{ config, pkgs, ... }: +{ + home = { + stateVersion = "23.05"; + username = "hertog"; + homeDirectory = "/home/hertog"; + packages = with pkgs; [ + # Base + epiphany + firefox + thunderbird + telegram-desktop + vlc + bottles + # Office + slack + onlyoffice-bin + marker + # Security + keepassxc + # Entertainment + steam + cartridges + prismlauncher-qt5 + qFlipper + protonup-qt + stremio + spotify + # Art + inkscape + gimp + # Shell + thefuck + pmbootstrap + wally-cli + # Programming + godot_4 + superTuxKart + signal-desktop + logseq + apostrophe + blanket + bookworm + retroarch + libretro.flycast + endeavour + R + rstudio + qemu + qemu_kvm + nixos-generators + ]; + }; + + imports = [ + # Home-manager configured program files + ./neovim.nix + ./helix.nix + ./obs.nix + ./hyfetch.nix + ./zsh.nix + ./git.nix + ]; + + programs.home-manager.enable = true; +} diff --git a/Users/Hertog/homeMinimal.nix b/Users/Hertog/homeMinimal.nix new file mode 100644 index 0000000..7f72816 --- /dev/null +++ b/Users/Hertog/homeMinimal.nix @@ -0,0 +1,22 @@ +{ config, pkgs, ... }: +{ + home = { + stateVersion = "23.05"; + username = "hertog"; + homeDirectory = "/home/hertog"; + packages = with pkgs; [ + # Base + thefuck + ]; + }; + + imports = [ + # Home-manager configured program files + ./neovim.nix + ./hyfetch.nix + ./zsh.nix + ./git.nix + ]; + + programs.home-manager.enable = true; +} diff --git a/Users/Hertog/hyfetch.nix b/Users/Hertog/hyfetch.nix new file mode 100644 index 0000000..e1d530d --- /dev/null +++ b/Users/Hertog/hyfetch.nix @@ -0,0 +1,15 @@ +{ pkgs, config, ... }: + +{ + # Hyfetch config :3 + programs.hyfetch = { + enable = true; + settings = { + preset = "bisexual"; + mode = "rgb"; + color_align = { + mode = "horizontal"; + }; + }; + }; +} diff --git a/Users/Hertog/neovim.nix b/Users/Hertog/neovim.nix new file mode 100644 index 0000000..952c9b9 --- /dev/null +++ b/Users/Hertog/neovim.nix @@ -0,0 +1,27 @@ +{ config, pkgs, ... }: + +{ + programs.neovim = { + enable = true; + defaultEditor = true; + vimAlias = true; + coc = { + enable = true; + }; + # VimRC + extraConfig = '' + set background=dark + colorscheme PaperColor + ''; + extraLuaConfig = '' + print("Welcome to Vim Hertog! :3") + ''; + # Plugins + plugins = with pkgs.vimPlugins; [ + vim-nix + nvim-treesitter-parsers.cpp + papercolor-theme + ]; + }; +} + diff --git a/Users/Hertog/obs.nix b/Users/Hertog/obs.nix new file mode 100644 index 0000000..0389809 --- /dev/null +++ b/Users/Hertog/obs.nix @@ -0,0 +1,9 @@ +{ pkgs, ... }: + +{ + # OBS studio configuration + programs.obs-studio = { + enable = true; + }; +} + diff --git a/Users/Hertog/user.nix b/Users/Hertog/user.nix new file mode 100644 index 0000000..e8a43db --- /dev/null +++ b/Users/Hertog/user.nix @@ -0,0 +1,14 @@ +{ config, pkgs, ... }: + +{ + users.users.hertog = { + # Left empty so no password is needed in iso + initialPassword = ""; + isNormalUser = true; + description = "Johannes Hendrik Gerard van der Weide"; + extraGroups = [ "networkmanager" "wheel" "sudo" "adm" "video" ]; + openssh.authorizedKeys.keys = [ + "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIEjpvCSpIUMsZ8pmz2LbvsJUdYroenTp6PYXw9ACiYBq hertog@fsfe.org" + ]; + }; +} diff --git a/Users/Hertog/zsh.nix b/Users/Hertog/zsh.nix new file mode 100644 index 0000000..b83b08e --- /dev/null +++ b/Users/Hertog/zsh.nix @@ -0,0 +1,38 @@ +{ pkgs, ... }: + +{ + # Zsh config + programs.zsh = { + enable = true; + initExtra = " + hyfetch + "; + shellAliases = { + ll = "ls -l"; + please = "sudo"; + update = "sudo nixos-rebuild switch --flake /etc/nixos/"; + }; + plugins = [ + { + name = "zsh-nix-shell"; + file = "nix-shell.plugin.zsh"; + src = pkgs.fetchFromGitHub { + owner = "chisui"; + repo = "zsh-nix-shell"; + rev = "v0.7.0"; + sha256 = "149zh2rm59blr2q458a5irkfh82y3dwdich60s9670kl3cl5h2m1"; + }; + } + ]; + oh-my-zsh = { + enable = true; + plugins = [ + "git" + "thefuck" + "sudo" + ]; + theme = "mh"; + }; + }; +} + diff --git a/Users/Sara/git.nix b/Users/Sara/git.nix new file mode 100644 index 0000000..610672e --- /dev/null +++ b/Users/Sara/git.nix @@ -0,0 +1,11 @@ +{ pkgs, ... }: + +{ + # Git configuration + programs.git = { + enable = true; + userName = "Sara Gerretsen"; + userEmail = "sara@saragerretsen.nl"; + }; +} + diff --git a/Users/Sara/homeFull.nix b/Users/Sara/homeFull.nix new file mode 100644 index 0000000..7d71c71 --- /dev/null +++ b/Users/Sara/homeFull.nix @@ -0,0 +1,43 @@ +{ config, pkgs, ... }: +{ + home = { + stateVersion = "23.05"; + username = "sara"; + homeDirectory = "/home/sara"; + packages = with pkgs; [ + # Base + firefox + thunderbird + signal-desktop + # Office + onlyoffice-bin + # Security + keepassxc + # Entertainment + stremio + spotify + # Art + inkscape + # Shell + thefuck + # Programming + gcc + cmake + make + godot_4 + rustc + rustup + cargo + ]; + }; + + imports = [ + # Home-manager configured program files + ./neovim.nix + ./hyfetch.nix + ./zsh.nix + ./git.nix + ]; + + programs.home-manager.enable = true; +} diff --git a/Users/Sara/homeMinimal.nix b/Users/Sara/homeMinimal.nix new file mode 100644 index 0000000..3b74fd7 --- /dev/null +++ b/Users/Sara/homeMinimal.nix @@ -0,0 +1,22 @@ +{ config, pkgs, ... }: +{ + home = { + stateVersion = "23.05"; + username = "sara"; + homeDirectory = "/home/sara"; + packages = with pkgs; [ + # Base + thefuck + ]; + }; + + imports = [ + # Home-manager configured program files + ./neovim.nix + ./hyfetch.nix + ./zsh.nix + ./git.nix + ]; + + programs.home-manager.enable = true; +} diff --git a/Users/Sara/hyfetch.nix b/Users/Sara/hyfetch.nix new file mode 100644 index 0000000..78a2433 --- /dev/null +++ b/Users/Sara/hyfetch.nix @@ -0,0 +1,15 @@ +{ pkgs, config, ... }: + +{ + # Hyfetch config :3 + programs.hyfetch = { + enable = true; + settings = { + preset = "trans"; + mode = "rgb"; + color_align = { + mode = "horizontal"; + }; + }; + }; +} diff --git a/Users/Sara/neovim.nix b/Users/Sara/neovim.nix new file mode 100644 index 0000000..29f6c2d --- /dev/null +++ b/Users/Sara/neovim.nix @@ -0,0 +1,27 @@ +{ config, pkgs, ... }: + +{ + programs.neovim = { + enable = true; + defaultEditor = true; + vimAlias = true; + coc = { + enable = true; + }; + # VimRC + extraConfig = '' + set background=dark + colorscheme PaperColor + ''; + extraLuaConfig = '' + print("Welcome to Vim Sara! :3") + ''; + # Plugins + plugins = with pkgs.vimPlugins; [ + vim-nix + nvim-treesitter-parsers.cpp + papercolor-theme + ]; + }; +} + diff --git a/Users/Sara/user.nix b/Users/Sara/user.nix new file mode 100644 index 0000000..f6a1a36 --- /dev/null +++ b/Users/Sara/user.nix @@ -0,0 +1,14 @@ +{ config, pkgs, ... }: + +{ + users.users.sara = { + # Left empty so no password is needed in iso + initialPassword = ""; + isNormalUser = true; + description = "Sara Gerretsen"; + extraGroups = [ "networkmanager" "wheel" "sudo" "adm" "video" ]; + openssh.authorizedKeys.keys = [ + "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIBhmYV/SSGScbig1xXa7EHFwaxtD0e0QCorPUromR0nM sara@fedora-fw" + ]; + }; +} diff --git a/Users/Sara/zsh.nix b/Users/Sara/zsh.nix new file mode 100644 index 0000000..ba62c5e --- /dev/null +++ b/Users/Sara/zsh.nix @@ -0,0 +1,38 @@ +{ pkgs, ... }: + +{ + # Zsh config + programs.zsh = { + enable = true; + initExtra = " + hyfetch + "; + shellAliases = { + ll = "ls -l"; + please = "sudo"; + }; + plugins = [ + { + name = "zsh-nix-shell"; + file = "nix-shell.plugin.zsh"; + src = pkgs.fetchFromGitHub { + owner = "chisui"; + repo = "zsh-nix-shell"; + rev = "v0.7.0"; + sha256 = "149zh2rm59blr2q458a5irkfh82y3dwdich60s9670kl3cl5h2m1"; + }; + } + ]; + oh-my-zsh = { + enable = true; + plugins = [ + "git" + "thefuck" + "sudo" + ]; + # Set the theme here + #theme = "mh"; + }; + }; +} + diff --git a/configuration.nix b/configuration.nix deleted file mode 100644 index f662b8d..0000000 --- a/configuration.nix +++ /dev/null @@ -1,79 +0,0 @@ -{ config, pkgs, ... }: - -{ - imports = - [ - ./hardware-configuration.nix - - # Services - ./services/ssh.nix - ./services/nginx.nix - ./services/uptime-kuma.nix - ./services/nextcloud.nix - ./services/tt-rss.nix - ./services/owncast.nix - - # Sites - ./sites/hermitcollective.net - ./sites/blog.hermitcollective.net - ./sites/hertog.hermitcollective.net - - # Users - ./users/hertog.nix - ./users/sara.nix - ]; - - # Bootloader. - boot.loader.systemd-boot.enable = true; - boot.loader.efi.canTouchEfiVariables = true; - - networking.hostName = "HermitCollective"; - networking.domain = "hermitcollective.net"; - - # Enable networking - networking.networkmanager.enable = true; - - # Set your time zone. - time.timeZone = "Europe/Amsterdam"; - - # Select internationalisation properties. - i18n.defaultLocale = "en_US.UTF-8"; - - # Configure keymap in X11 - services.xserver = { - layout = "us"; - xkbVariant = ""; - }; - - # Allow unfree packages - nixpkgs.config.allowUnfree = true; - - # Accept ACME terms - security.acme.acceptTerms = true; - security.acme.defaults.email = "hertog@fsfe.org"; - - environment.systemPackages = with pkgs; [ - neofetch - helix - hyfetch - bottom - iftop - openssl - git - ]; - - # Open ports in the firewall. - networking.firewall.allowedTCPPorts = [ 22 80 443 8080 8181 1935 ]; - # 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 = "23.05"; # Did you read the comment? - nix.settings.experimental-features = [ "nix-command" "flakes" ]; -} diff --git a/flake.lock b/flake.lock new file mode 100644 index 0000000..fcecf05 --- /dev/null +++ b/flake.lock @@ -0,0 +1,48 @@ +{ + "nodes": { + "home-manager": { + "inputs": { + "nixpkgs": [ + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1698670511, + "narHash": "sha256-jQIu3UhBMPHXzVkHQO1O2gg8SVo5lqAVoC6mOaLQcLQ=", + "owner": "nix-community", + "repo": "home-manager", + "rev": "8e5416b478e465985eec274bc3a018024435c106", + "type": "github" + }, + "original": { + "owner": "nix-community", + "ref": "master", + "repo": "home-manager", + "type": "github" + } + }, + "nixpkgs": { + "locked": { + "lastModified": 1699099776, + "narHash": "sha256-X09iKJ27mGsGambGfkKzqvw5esP1L/Rf8H3u3fCqIiU=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "85f1ba3e51676fa8cc604a3d863d729026a6b8eb", + "type": "github" + }, + "original": { + "id": "nixpkgs", + "ref": "nixos-unstable", + "type": "indirect" + } + }, + "root": { + "inputs": { + "home-manager": "home-manager", + "nixpkgs": "nixpkgs" + } + } + }, + "root": "root", + "version": 7 +} diff --git a/flake.nix b/flake.nix new file mode 100644 index 0000000..8253299 --- /dev/null +++ b/flake.nix @@ -0,0 +1,100 @@ +{ + description = "NixOS system configuration"; + + inputs = { + nixpkgs.url = "nixpkgs/nixos-unstable"; + home-manager = { + url = "github:nix-community/home-manager/master"; + inputs.nixpkgs.follows = "nixpkgs"; + }; + }; + + outputs = { self, nixpkgs, home-manager, ... }@inputs: + let + system = "x86_64-linux"; + currentSystem = system; + pkgs = import nixpkgs { + inherit system; + }; + + lib = nixpkgs.lib; + + in { + nixosConfigurations = { + # Configuration for my framework 13 inch 11gen laptop + laptop = lib.nixosSystem { + inherit system; + modules = [ + # Set hardware config for the right host + ./Hosts/hertog-laptop/hardware-configuration.nix + # System + ./System/configuration.nix + ./Hosts/hertog-laptop/configuration.nix + # Comment out what's needed based on host + #./System/getty.nix + ./System/gnome.nix + ./System/audio.nix + # Appliances is where printer support is enabled but also things like flipperzero flashing + ./System/appliances.nix + # Systemwide installed pacakges userpackages are set through home-manager + ./System/packages.nix + ./Hosts/hertog-laptop/packages.nix + # Users still need to be set outside of home-manager + ./Users/Hertog/user.nix + # Home manager imports + home-manager.nixosModules.home-manager { + home-manager = { + useGlobalPkgs = true; + useUserPackages = true; + users.hertog = import ./Users/Hertog/homeFull.nix; + }; + } + ]; + specialArgs = { + inputs = inputs; + inherit system; + }; + }; + # HermitCollective Server config + server = lib.nixosSystem { + inherit system; + modules = [ + # System configuration + ./Hosts/hertog-server/hardware-configuration.nix + ./System/configuration.nix + ./Hosts/hertog-server/configuration.nix + ./System/getty.nix + ./System/packages.nix + ./Hosts/hertog-server/packages.nix + # Services + ./Services/ssh.nix + ./Services/nginx.nix + ./Services/nextcloud.nix + ./Services/tt-rss.nix + ./Services/owncast.nix + ./Services/uptime-kuma.nix + # Sites + ./Sites/hermitcollective.net + ./Sites/blog.hermitcollective.net + ./Sites/hertog.hermitcollective.net + # Users + ./Users/Hertog/user.nix + ./Users/Sara/user.nix + home-manager.nixosModules.home-manager { + home-manager = { + useGlobalPkgs = true; + useUserPackages = true; + users.hertog = import ./Users/Hertog/homeMinimal.nix; + users.sara = import ./Users/Sara/homeMinimal.nix; + }; + } + ]; + specialArgs = { + inputs = inputs; + inherit system; + }; + }; + }; + }; +} + diff --git a/users/hertog.nix b/users/hertog.nix deleted file mode 100644 index 6456c5d..0000000 --- a/users/hertog.nix +++ /dev/null @@ -1,10 +0,0 @@ - { config, pkgs, ... }: -{ - users.users.hertog = { - isNormalUser = true; - description = "Johannes Hendrik Gerard van der Weide"; - extraGroups = [ "networkmanager" "wheel" "podman" ]; - openssh.authorizedKeys.keys = ["ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIEjpvCSpIUMsZ8pmz2LbvsJUdYroenTp6PYXw9ACiYBq hertog@fsfe.org"]; - packages = with pkgs; []; - }; -} diff --git a/users/sara.nix b/users/sara.nix deleted file mode 100644 index 015f461..0000000 --- a/users/sara.nix +++ /dev/null @@ -1,12 +0,0 @@ -{ config, pkgs, ... }: -{ - users.users.sara = { - isNormalUser = true; - description = "Sara Gerretsen"; - extraGroups = [ "networkmanager" "wheel" "podman" ]; - openssh.authorizedKeys.keys = ["ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIBhmYV/SSGScbig1xXa7EHFwaxtD0e0QCorPUromR0nM sara@fedora-fw"]; - packages = with pkgs; [ - # User packages go here - ]; - }; -}