From 88de5621c2cd28716d383ef8bb85fabbcb052da8 Mon Sep 17 00:00:00 2001 From: Lillian-Violet Date: Thu, 26 Oct 2023 16:48:06 +0200 Subject: [PATCH] Added GLaDOS configs (copied from EDI) --- flake.nix | 21 ++++ home-manager/GLaDOS-Lillian.nix | 196 ++++++++++++++++++++++++++++++++ nixos/GLaDOS/configuration.nix | 176 ++++++++++++++++++++++++++++ 3 files changed, 393 insertions(+) create mode 100644 home-manager/GLaDOS-Lillian.nix create mode 100644 nixos/GLaDOS/configuration.nix diff --git a/flake.nix b/flake.nix index d260865..0316422 100644 --- a/flake.nix +++ b/flake.nix @@ -70,6 +70,16 @@ }; }; + nixosConfigurations = { + GLaDOS = nixpkgs.lib.nixosSystem { + specialArgs = {inherit inputs outputs;}; + modules = [ + # > Our main nixos configuration file < + ./nixos/GLaDOS/configuration.nix + ]; + }; + }; + # Standalone home-manager configuration entrypoint # Available through 'home-manager --flake .#your-username@your-hostname' homeConfigurations = { @@ -82,5 +92,16 @@ ]; }; }; + + homeConfigurations = { + "lillian@GLaDOS" = home-manager.lib.homeManagerConfiguration { + pkgs = nixpkgs.legacyPackages.x86_64-linux; # Home-manager requires 'pkgs' instance + extraSpecialArgs = {inherit inputs outputs;}; + modules = [ + # > Our main home-manager configuration file < + ./home-manager/GLaDOS-Lillian.nix + ]; + }; + }; }; } diff --git a/home-manager/GLaDOS-Lillian.nix b/home-manager/GLaDOS-Lillian.nix new file mode 100644 index 0000000..50db1ee --- /dev/null +++ b/home-manager/GLaDOS-Lillian.nix @@ -0,0 +1,196 @@ +# This is your home-manager configuration file +# Use this to configure your home environment (it replaces ~/.config/nixpkgs/home.nix) +{ + inputs, + outputs, + lib, + config, + pkgs, + ... +}: { + # You can import other home-manager modules here + imports = [ + # If you want to use modules your own flake exports (from modules/home-manager): + # outputs.homeManagerModules.example + + # Or modules exported from other flakes (such as nix-colors): + # inputs.nix-colors.homeManagerModules.default + + # You can also split up your configuration and import pieces of it here: + # ./nvim.nix + ]; + + nixpkgs = { + # You can add overlays here + overlays = [ + # Add overlays your own flake exports (from overlays and pkgs dir): + outputs.overlays.additions + outputs.overlays.modifications + outputs.overlays.unstable-packages + + # You can also add overlays exported from other flakes: + # neovim-nightly-overlay.overlays.default + + # Or define it inline, for example: + # (final: prev: { + # hi = final.hello.overrideAttrs (oldAttrs: { + # patches = [ ./change-hello-to-hi.patch ]; + # }); + # }) + ]; + # Configure your nixpkgs instance + config = { + # Disable if you don't want unfree packages + allowUnfree = true; + # Workaround for https://github.com/nix-community/home-manager/issues/2942 + allowUnfreePredicate = _: true; + }; + }; + + home = { + username = "lillian"; + homeDirectory = "/home/lillian"; + }; + + # Add stuff for your user as you see fit: + # programs.neovim.enable = true; + # home.packages = with pkgs; [ steam ]; + + home.packages = with pkgs; [ + # Coding: + git + kate + + # Chat applications: + element-desktop + signal-desktop + webcord-vencord + + # Gaming: + prismlauncher + steam + + # Multimedia: + freetube + obs-studio + vlc + + # Office applications: + onlyoffice-bin + + # System tools: + rage + bitwarden + discover + flameshot + fzf + nextcloud-client + nitrokey-app + protonvpn-gui + virtualbox + watchmate + qbittorrent + zsh + + # Web browsing: + firefox + ungoogled-chromium + ]; + + programs.vscode = { + enable = true; + package = pkgs.vscodium; + extensions = with pkgs.vscode-extensions; [ + dracula-theme.theme-dracula + arrterian.nix-env-selector + jnoortheen.nix-ide + kamadorueda.alejandra + ms-toolsai.jupyter + ms-python.python + rust-lang.rust-analyzer + yzhang.markdown-all-in-one + ]; + }; + + programs.zsh = { + enable = true; + enableAutosuggestions = true; + enableCompletion = true; + historySubstringSearch.enable = true; + syntaxHighlighting.enable = true; + zsh-abbr.enable = true; + oh-my-zsh = { + enable = true; + plugins = [ + "git" + "adb" + "battery" + "branch" + "coffee" + "colored-man-pages" + "colorize" + "command-not-found" + "common-aliases" + "compleat" + "composer" + "copypath" + "copybuffer" + "copyfile" + "cp" + "dirhistory" + "dirpersist" + "docker" + "docker-compose" + "extract" + "fancy-ctrl-z" + "fastfile" + "frontend-search" + "git-auto-fetch" + "git-escape-magic" + "git-extras" + "git-flow" + "github" + "gitignore" + "gnu-utils" + "gpg-agent" + "history" + "history-substring-search" + "isodate" + "jsontools" + "keychain" + "man" + "nanoc" + "pip" + "pipenv" + "pyenv" + "python" + "rsync" + "rvm" + "screen" + "sdk" + "sfdx" + "shell-proxy" + "sudo" + "systemadmin" + "systemd" + "themes" + "urltools" + "web-search" + "zsh-interactive-cd" + "zsh-navigation-tools" + "zsh-nix-shell" + ]; + theme = "jtriley"; + }; + }; + + # Enable home-manager and git + programs.home-manager.enable = true; + programs.git.enable = true; + + # Nicely reload system units when changing configs + systemd.user.startServices = "sd-switch"; + + # https://nixos.wiki/wiki/FAQ/When_do_I_update_stateVersion + home.stateVersion = "23.11"; +} diff --git a/nixos/GLaDOS/configuration.nix b/nixos/GLaDOS/configuration.nix new file mode 100644 index 0000000..a58d23e --- /dev/null +++ b/nixos/GLaDOS/configuration.nix @@ -0,0 +1,176 @@ +# This is your system's configuration file. +# Use this to configure your system environment (it replaces /etc/nixos/configuration.nix) +{ + inputs, + outputs, + lib, + config, + pkgs, + ... +}: { + # You can import other NixOS modules here + imports = [ + # If you want to use modules your own flake exports (from modules/nixos): + # outputs.nixosModules.example + + # Or modules from other flakes (such as nixos-hardware): + # inputs.hardware.nixosModules.common-cpu-amd + # inputs.hardware.nixosModules.common-ssd + + # You can also split up your configuration and import pieces of it here: + # ./users.nix + + # Import your generated (nixos-generate-config) hardware configuration + ./hardware-configuration.nix + ]; + + nixpkgs = { + # You can add overlays here + overlays = [ + # Add overlays your own flake exports (from overlays and pkgs dir): + outputs.overlays.additions + outputs.overlays.modifications + outputs.overlays.unstable-packages + + # You can also add overlays exported from other flakes: + # neovim-nightly-overlay.overlays.default + + # Or define it inline, for example: + # (final: prev: { + # hi = final.hello.overrideAttrs (oldAttrs: { + # patches = [ ./change-hello-to-hi.patch ]; + # }); + # }) + ]; + # Configure your nixpkgs instance + config = { + # Disable if you don't want unfree packages + allowUnfree = true; + }; + }; + + nix = { + gc = { + automatic = true; + dates = "weekly"; + options = "--delete-older-than 7d"; + }; + # This will add each flake input as a registry + # To make nix3 commands consistent with your flake + registry = lib.mapAttrs (_: value: {flake = value;}) inputs; + + # This will additionally add your inputs to the system's legacy channels + # Making legacy nix commands consistent as well, awesome! + nixPath = lib.mapAttrsToList (key: value: "${key}=${value.to.path}") config.nix.registry; + + settings = { + # Enable flakes and new 'nix' command + experimental-features = "nix-command flakes"; + # Deduplicate and optimize nix store + auto-optimise-store = true; + }; + }; + + environment.systemPackages = with pkgs; [ + rage + alejandra + git-filter-repo + home-manager + libsForQt5.discover + libsForQt5.kdepim-addons + libsForQt5.packagekit-qt + libportal-qt5 + noto-fonts + noto-fonts-emoji-blob-bin + noto-fonts-emoji + noisetorch + oh-my-zsh + pciutils + rsync + wget + zsh + ]; + + # Enable networking + networking.networkmanager.enable = true; + + # Set your time zone. + time.timeZone = "Europe/Amsterdam"; + + # Select internationalisation properties. + i18n.defaultLocale = "en_US.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"; + }; + + # Enable the X11 windowing system. + services.xserver.enable = true; + + # Enable the KDE Plasma Desktop Environment. + services.xserver.displayManager.sddm.enable = true; + services.xserver.desktopManager.plasma5.enable = true; + services.xserver.displayManager.defaultSession = "plasmawayland"; + + # Enable flatpak support + services.flatpak.enable = true; + services.packagekit.enable = true; + + # Configure keymap in X11 + services.xserver = { + layout = "us"; + xkbVariant = ""; + }; + + # Enable CUPS to print documents. + services.printing.enable = true; + + # Enable bluetooth hardware + hardware.bluetooth.enable = true; + + # Enable fwupd daemon and user space client + services.fwupd.enable = true; + + # 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; + }; + + programs.zsh = { + enable = true; + }; + + networking.hostName = "EDI"; + + boot.loader.systemd-boot.enable = true; + boot.loader.systemd-boot.configurationLimit = 3; + boot.loader.efi.canTouchEfiVariables = true; + + users.users = { + lillian = { + isNormalUser = true; + extraGroups = ["sudo" "networkmanager" "wheel" "vboxsf"]; + shell = pkgs.zsh; + }; + }; + + # Enable completion of system packages by zsh + environment.pathsToLink = ["/share/zsh"]; + + # https://nixos.wiki/wiki/FAQ/When_do_I_update_stateVersion + system.stateVersion = "unstable"; +}