commit 3255b199db9b3a48a5b8f47533416caf9a1db822 Author: cookiez Date: Thu Aug 7 14:04:06 2025 +0200 Initial commit of NixOS config diff --git a/autostart.nix b/autostart.nix new file mode 100644 index 0000000..aa580b2 --- /dev/null +++ b/autostart.nix @@ -0,0 +1,41 @@ +{ config, pkgs, ... }: +{ + systemd.user.services.set-wallpaper = { + enable = true; + description = "Set KDE Plasma wallpaper"; + #after = [ "plasma-desktop.service" ]; + serviceConfig.ExecStart = [ "/run/current-system/sw/bin/plasma-apply-wallpaperimage /etc/nixos/other/wallpaper.png" ]; + wantedBy = [ "graphical-session.target" ]; + serviceConfig = { + Type = "oneshot"; + Restart = "on-failure"; + RestartSec = "5s"; + }; + }; + + systemd.user.services.autostart-yakuake = { + enable = false; + description = "Automatically start Yakuake"; + #after = [ "plasma-desktop.service" ]; + serviceConfig.ExecStart = [ "${pkgs.kdePackages.yakuake}/bin/yakuake" ]; + wantedBy = [ "default.target" ]; + serviceConfig = { + Type = "oneshot"; + Restart = "on-failure"; + RestartSec = "5s"; + }; + }; + + systemd.user.services.autostart-trayscale = { + enable = true; + description = "Automatically start Trayscale"; + #after = [ "plasma-desktop.service" ]; + serviceConfig.ExecStart = [ "${pkgs.trayscale}/bin/trayscale --hide-window" ]; + wantedBy = [ "default.target" ]; + serviceConfig = { + Type = "oneshot"; + Restart = "on-failure"; + RestartSec = "5s"; + }; + }; +} diff --git a/configuration.nix b/configuration.nix new file mode 100644 index 0000000..a4ec619 --- /dev/null +++ b/configuration.nix @@ -0,0 +1,225 @@ +# 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’). + +#Access Internet using: +#nmcli device wifi list +#nmcli device wifi connect password +# or if no password (open wifi) +#nmcli device wifi connect + +#Nix flake file limit: ulimit -n 500000 + +{ config, pkgs, ... }: +{ + + #Assign Swap to the PC + #swapDevices = [{ + # device = "/swapfile"; + # size = 16 * 1024; # 16GB + #}]; + + imports = + [ + ./hardware-configuration.nix + #Moved to flake.nix + #./packages.nix + #./firefox.nix + #./zsh.nix + #./lockscreen.nix + ]; + + # Bootloader. + boot.loader = { + systemd-boot.enable = false; + efi.canTouchEfiVariables = true; + #boot.loader.efi.efiSysMountPoint = "/boot/efi"; + grub = { + enable = true; + device = "/dev/sdb"; #Needs to be changed when using a new computer! (Make grub partition - look below!) + #devices = [ "nodev" ]; + efiSupport = true; + useOSProber = true; + }; + grub2-theme = { + enable = true; + theme = "whitesur"; + footer = true; + }; + timeout = 10; + }; + + #Ensure there is a grub_bios partition: (gparted) + #Create a new parititon. File System: Unformatted - Size: ~5 Mib + #Apply + #Manage flags -> Add bios_grub + + networking.hostName = "nixos"; + # Define your hostname. + # networking.wireless.enable = true; # Enables wireless support via wpa_supplicant. + + # Configure network proxy if necessary + # networking.proxy.default = "http://user:password@proxy:port/"; + # networking.proxy.noProxy = "127.0.0.1,localhost,internal.domain"; + + # Enable networking + networking.networkmanager.enable = true; + + # Set your time zone. + time.timeZone = "Europe/Berlin"; + + # Select internationalisation properties. + i18n.defaultLocale = "en_US.UTF-8"; + + i18n.extraLocaleSettings = { + LC_ADDRESS = "de_DE.UTF-8"; + LC_IDENTIFICATION = "de_DE.UTF-8"; + LC_MEASUREMENT = "de_DE.UTF-8"; + LC_MONETARY = "de_DE.UTF-8"; + LC_NAME = "de_DE.UTF-8"; + LC_NUMERIC = "de_DE.UTF-8"; + LC_PAPER = "de_DE.UTF-8"; + LC_TELEPHONE = "de_DE.UTF-8"; + LC_TIME = "de_DE.UTF-8"; + }; + + # Enable the X11 windowing system. + # You can disable this if you're only using the Wayland session. + services.xserver.enable = true; + + # Enable the KDE Plasma Desktop Environment. + services.displayManager.sddm.enable = true; + services.desktopManager.plasma6 = { + enable = true; + #Wallpaper options isnt available anymore in Plasma6 + #wallpaper = { + # mode = "scale"; + # image = "/etc/nixos/other/wallpaper.png"; + #}; + }; + + services.ollama = { + enable = true; + # Optional: load models on startup + #loadModels = [ ... ]; + }; + + services.locate = { + enable = true; + package = pkgs.plocate; + #To get rid of warning + #Depircated: + #localuser = null; + }; + + # Configure keymap in X11 + services.xserver.xkb = { + layout = "de"; + variant = ""; + }; + + services.tailscale.enable = true; + + fonts.packages = with pkgs; [ + font-awesome + #TODO reconfigure nerd fonts!!! + #nerd-fonts + meslo-lgs-nf + ]; + + # Configure console keymap + console.keyMap = "de"; + + # Enable CUPS to print documents. + services.printing.enable = true; + + # Enable sound with pipewire. + services.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; + }; + + # 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.cookiez = { + isNormalUser = true; + description = "Cookiez"; + extraGroups = [ "networkmanager" "wheel" ]; + packages = with pkgs; [ + #User Packages Here + ]; + }; + + #So no user in the group Wheel has to input the password in order to use sudo + security.sudo.wheelNeedsPassword = false; + + #theme-reminder uses a definitive /home/cookiez path!!! + system.activationScripts.script.text = '' + source /etc/nixos/other/colors.sh + source /etc/nixos/other/pfp.sh + + source /etc/nixos/other/theme-reminder.sh + + echo -e "Use: $YELLOW'home-manager switch'$NOCOLOR or $DARKGRAY'home-upd'$NOCOLOR (if available) to update your home manager!" + ''; + + + # #Install firefox. + #programs.firefox.enable = true; + #Enabled in a separate firefox.nix + + #Allow Nix Commands + nix.settings.experimental-features = [ "nix-command" "flakes" ]; + + #To allow the Flake to build all packages (Too many open files error) + #systemd.services.nix-deamon.serviceConfig.LimitNOFILE = 100000; + + # Allow unfree packages + nixpkgs.config.allowUnfree = true; + + programs.steam.enable = 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; + + environment.variables = { + EDITOR = "micro"; + # XKB_DEFAULT_LAYOUT = "de"; + }; + + # 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 = "25.05"; # Did you read the comment? +} diff --git a/firefox.nix b/firefox.nix new file mode 100644 index 0000000..5378155 --- /dev/null +++ b/firefox.nix @@ -0,0 +1,100 @@ +{ config, pkgs, ... }: + + let + lock-false = { + Value = false; + Status = "locked"; + }; + lock-true = { + Value = true; + Status = "locked"; + }; + in + +{ + programs = { + firefox = { + enable = true; + languagePacks = [ "de" "en-US" ]; + + /* ---- POLICIES ---- */ + # Check about:policies#documentation for options. + policies = { + PasswordManagerEnabled = false; + DisableTelemetry = true; + DisableFirefoxStudies = true; + EnableTrackingProtection = { + Value= true; + Locked = true; + Cryptomining = true; + Fingerprinting = true; + }; + DisablePocket = true; + #DisableFirefoxAccounts = true; + #DisableAccounts = true; + #DisableFirefoxScreenshots = true; + OverrideFirstRunPage = ""; + OverridePostUpdatePage = ""; + DontCheckDefaultBrowser = true; + DisplayBookmarksToolbar = "always"; # alternatives: "always" or "newtab" + DisplayMenuBar = "default-off"; # alternatives: "always", "never" or "default-on" + SearchBar = "unified"; # alternative: "separate" + + /* ---- EXTENSIONS ---- */ + # Check about:support for extension/add-on ID strings. + # Valid strings for installation_mode are "allowed", "blocked", + # "force_installed" and "normal_installed". + + # How to: https://discourse.nixos.org/t/declare-firefox-extensions-and-settings/36265 + ExtensionSettings = + with builtins; + let + extension = shortId: uuid: { + name = uuid; + value = { + install_url = "https://addons.mozilla.org/en-US/firefox/downloads/latest/${shortId}/latest.xpi"; + installation_mode = "normal_installed"; + }; + }; + in + listToAttrs [ + (extension "ublock-origin" "uBlock0@raymondhill.net") + (extension "bitwarden-password-manager" "{446900e4-71c2-419f-a6a7-df9c091e268b}") + #(extension "2fas-two-factor-authentication" "admin@2fas.com") + (extension "sponsorblock" "sponsorBlocker@ajay.app") + #(extension "dearrow" "deArrow@ajay.app") + #(extension "enhancer-for-youtube" "enhancerforyoutube@maximerf.addons.mozilla.org") + #(extension "tabliss" "extension@tabliss.io") + #(extension "don-t-fuck-with-paste" "DontFuckWithPaste@raim.ist") + #(extension "clearurls" "{74145f27-f039-47ce-a470-a662b129930a}") + #(extension "react-devtools" "@react-devtools") + (extension "keepa" "amptra@keepa.com") + (extension "redditUntranslate" "reddit-url-redirector@kichkoupi.com") + ]; + + /* ---- PREFERENCES ---- */ + # Check about:config for options. + Preferences = { + "browser.contentblocking.category" = { Value = "strict"; Status = "locked"; }; + "extensions.pocket.enabled" = lock-false; + "extensions.screenshots.disabled" = lock-true; + "browser.topsites.contile.enabled" = lock-false; + #"browser.formfill.enable" = lock-false; + #"browser.search.suggest.enabled" = lock-false; + #"browser.search.suggest.enabled.private" = lock-false; + #"browser.urlbar.suggest.searches" = lock-false; + "browser.urlbar.showSearchSuggestionsFirst" = lock-false; + "browser.newtabpage.activity-stream.feeds.section.topstories" = lock-false; + "browser.newtabpage.activity-stream.feeds.snippets" = lock-false; + "browser.newtabpage.activity-stream.section.highlights.includePocket" = lock-false; + "browser.newtabpage.activity-stream.section.highlights.includeBookmarks" = lock-false; + "browser.newtabpage.activity-stream.section.highlights.includeDownloads" = lock-false; + "browser.newtabpage.activity-stream.section.highlights.includeVisited" = lock-false; + "browser.newtabpage.activity-stream.showSponsored" = lock-false; + "browser.newtabpage.activity-stream.system.showSponsored" = lock-false; + "browser.newtabpage.activity-stream.showSponsoredTopSites" = lock-false; + }; + }; + }; + }; +} diff --git a/flake.lock b/flake.lock new file mode 100644 index 0000000..d8ba4e1 --- /dev/null +++ b/flake.lock @@ -0,0 +1,105 @@ +{ + "nodes": { + "grub2-themes": { + "inputs": { + "nixpkgs": "nixpkgs" + }, + "locked": { + "lastModified": 1734412921, + "narHash": "sha256-JeMqc7lLowKn6klrCcOkcOg38yNqF7MPbN4Elh6Xvq0=", + "owner": "vinceliuice", + "repo": "grub2-themes", + "rev": "f6ab2438e124f60a340a526543e498e5e33b3c53", + "type": "github" + }, + "original": { + "owner": "vinceliuice", + "repo": "grub2-themes", + "type": "github" + } + }, + "home-manager": { + "inputs": { + "nixpkgs": [ + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1753592768, + "narHash": "sha256-oV695RvbAE4+R9pcsT9shmp6zE/+IZe6evHWX63f2Qg=", + "owner": "nix-community", + "repo": "home-manager", + "rev": "fc3add429f21450359369af74c2375cb34a2d204", + "type": "github" + }, + "original": { + "owner": "nix-community", + "ref": "release-25.05", + "repo": "home-manager", + "type": "github" + } + }, + "nixpkgs": { + "locked": { + "lastModified": 1747299480, + "narHash": "sha256-jh2mqZ//3dul63Hdc/xm0elMv3lBd3WH0Z9YTDM+PJU=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "a7b6b1ea1abb5f0b630bd9a1765bdb99ae19c313", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "master", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_2": { + "locked": { + "lastModified": 1753489912, + "narHash": "sha256-uDCFHeXdRIgJpYmtcUxGEsZ+hYlLPBhR83fdU+vbC1s=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "13e8d35b7d6028b7198f8186bc0347c6abaa2701", + "type": "github" + }, + "original": { + "owner": "nixos", + "ref": "nixos-25.05", + "repo": "nixpkgs", + "type": "github" + } + }, + "root": { + "inputs": { + "grub2-themes": "grub2-themes", + "home-manager": "home-manager", + "nixpkgs": "nixpkgs_2", + "zen-browser": "zen-browser" + } + }, + "zen-browser": { + "inputs": { + "nixpkgs": [ + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1747282003, + "narHash": "sha256-UlCfXNncIYwUvPxHngoH6pY4fiZlU8Z2Ve/gUEn6h+o=", + "owner": "youwen5", + "repo": "zen-browser-flake", + "rev": "952ca99903f19a7096a3709f2938d9c7840a5f91", + "type": "github" + }, + "original": { + "owner": "youwen5", + "repo": "zen-browser-flake", + "type": "github" + } + } + }, + "root": "root", + "version": 7 +} diff --git a/flake.nix b/flake.nix new file mode 100644 index 0000000..68ec104 --- /dev/null +++ b/flake.nix @@ -0,0 +1,49 @@ +{ + description = "NixOS configuration"; + + inputs = { + nixpkgs.url = "github:nixos/nixpkgs/nixos-25.05"; + home-manager.url = "github:nix-community/home-manager/release-25.05"; + home-manager.inputs.nixpkgs.follows = "nixpkgs"; + #zen-browser.url = "github:MarceColl/zen-browser-flake"; + zen-browser.url = "github:youwen5/zen-browser-flake"; + zen-browser.inputs.nixpkgs.follows = "nixpkgs"; + grub2-themes = { url = "github:vinceliuice/grub2-themes"; }; + }; + + outputs = inputs@{ nixpkgs, home-manager, zen-browser, grub2-themes, ... }: + let + username = "cookiez"; + version = "25.05"; + in + { + nixosConfigurations = { + #Replace the below with your hostname!!! Like: {hostname} = nixpkgs.lib.nixosSystem { + nixos = nixpkgs.lib.nixosSystem { + system = "x86_64-linux"; + specialArgs = { + inherit inputs username version; + }; + modules = [ + ./configuration.nix + ./firefox.nix + ./zsh.nix + ./autostart.nix + #./virtual-machine.nix + #./zen.nix + #./neovim.nix + ./packages.nix + ./lockscreen.nix + grub2-themes.nixosModules.default + home-manager.nixosModules.home-manager + { + home-manager.useGlobalPkgs = true; + home-manager.useUserPackages = true; + home-manager.users.${username} = ./home.nix; + home-manager.extraSpecialArgs = { inherit inputs username version; system = "x86_64-linux"; }; + } + ]; + }; + }; + }; +} diff --git a/hardware-configuration.nix b/hardware-configuration.nix new file mode 100644 index 0000000..793dc6b --- /dev/null +++ b/hardware-configuration.nix @@ -0,0 +1,41 @@ +# 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" "uas" "sd_mod" ]; + boot.initrd.kernelModules = [ ]; + boot.kernelModules = [ "kvm-intel" ]; + boot.extraModulePackages = [ ]; + + fileSystems."/" = + { device = "/dev/disk/by-uuid/22a6fa16-0657-4df8-b3e2-7f95fbae778c"; + fsType = "ext4"; + }; + + fileSystems."/boot" = + { device = "/dev/disk/by-uuid/868C-A59D"; + fsType = "vfat"; + options = [ "fmask=0077" "dmask=0077" ]; + }; + + swapDevices = + [ { device = "/dev/disk/by-uuid/cb5dbfc0-7c90-41f7-9cad-8c75d84c9d18"; } + ]; + + # 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.eno1.useDHCP = lib.mkDefault true; + # networking.interfaces.wlp2s0.useDHCP = lib.mkDefault true; + + nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux"; + hardware.cpu.intel.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware; +} diff --git a/home.nix b/home.nix new file mode 100644 index 0000000..1773ac3 --- /dev/null +++ b/home.nix @@ -0,0 +1,28 @@ +{ inputs, config, pkgs, username, version, ... }: +{ + + # Home Manager needs a bit of information about you and the + # paths it should manage. + home.username = username; + home.homeDirectory = "/home/${username}"; + + # This value determines the Home Manager release that your + # configuration is compatible with. This helps avoid breakage + # when a new Home Manager release introduces backwards + # incompatible changes. + # + # You can update Home Manager without changing this value. See + # the Home Manager release notes for a list of state version + # changes in each release. + home.stateVersion = version; + + # Let Home Manager install and manage itself. + programs = { + home-manager.enable = true; + git = { + enable = true; + userName = "Cookiez"; + userEmail = "jaden-puerkenauer@web.de"; + }; + }; +} diff --git a/hyprland.nix b/hyprland.nix new file mode 100644 index 0000000..5738257 --- /dev/null +++ b/hyprland.nix @@ -0,0 +1,37 @@ +{ config, pkgs, ... }: +{ + environment.systemPackages = with pkgs; + [ + (waybar.overrideAttrs (oldAttrs: { + mesonFlags = oldAttrs.mesonFlags ++ [ "-Dexperimental=true" ]; + }) + ) + dunst + libnotify + hyprpaper + + kitty #Terminal + rofi-wayland + ]; + + #programs.hyprland.enable = true; + #programs.hyprland = { + # enable = true; + # xwayland.enable = true; + #}; + + #xdg.portal = { + # enable = true; + # extraPortals = [ pkgs.xdg-desktop-portal-gtk ]; + #}; + + #sound.enable = true; + #security.rtkit.enable = true; + #services.pipewire = { + # enable = true; + # alsa.enable = true; + # alsa.support3Bbit = true; + # pulse.enable = true; + # jack.enable = true; + #} +} diff --git a/lockscreen.nix b/lockscreen.nix new file mode 100644 index 0000000..8501d49 --- /dev/null +++ b/lockscreen.nix @@ -0,0 +1,29 @@ +{ config, pkgs, lib, ... }: + +let + # Define the custom background package with the correct relative path + background-package = pkgs.stdenvNoCC.mkDerivation { + name = "background-image"; + src = ./other/wallpaper.png; # Place wallpaper.jpg in the same directory as this config file + dontUnpack = true; + installPhase = '' + cp $src $out + ''; + }; +in + +{ +# X11 and KDE Plasma configuration + #services.xserver.enable = true; + services.displayManager.sddm = { + enable = lib.mkDefault true; + theme = "breeze"; + wayland.enable = true; + }; + environment.systemPackages = with pkgs; [ + (pkgs.writeTextDir "share/sddm/themes/breeze/theme.conf.user" '' + [General] + background = "${background-package}" + '') + ]; +} diff --git a/neovim.nix b/neovim.nix new file mode 100644 index 0000000..361da8b --- /dev/null +++ b/neovim.nix @@ -0,0 +1,25 @@ +{ config, lib, pkgs, ... }: +{ + programs.neovim = { + # ... + plugins = with pkgs.vimPlugins; [ + lazy-nvim + ]; + + extraLuaConfig = + # lua + '' + require("lazy").setup({ + -- disable all update / install features + -- this is handled by nix + rocks = { enabled = false }, + pkg = { enabled = false }, + install = { missing = false }, + change_detection = { enabled = false }, + spec = { + -- TODO + }, + }) + ''; + }; +} diff --git a/other/aliases b/other/aliases new file mode 100644 index 0000000..02ff42a --- /dev/null +++ b/other/aliases @@ -0,0 +1,35 @@ +#---------- +# Commands that will be used as aliases for zsh and bash +#---------- + +# Common commands +#----- +alias py="python3" +alias mcrow="sudo micro" + + + + +alias neofetch="fastfetch" + + + +# Nix Specific commands +#----- +alias nix-upd="sudo nixos-rebuild switch --flake /etc/nixos" +alias nix-update="sudo nixos-rebuild switch --flake /etc/nixos" +alias nix-edit="sudoedit /etc/nixos/configuration.nix" +alias nix-packages="sudoedit /etc/nixos/packages.nix" +alias nix-pkgs="sudoedit /etc/nixos/packages.nix" +alias nix-flake="sudoedit /etc/nixos/flake.nix" +alias nix-edit-flake="sudoedit /etc/nixos/flake.nix" +alias nix-zsh="sudoedit /etc/nixos/zsh.nix" +alias nix-edit-zsh="sudoedit /etc/nixos/zsh.nix" +alias nix-aliases="sudoedit /etc/nixos/other/aliases" +alias nix-edit-aliases="sudoedit /etc/nixos/other/aliases" +alias nix-regenerate-config="sudo nixos-generate-config" +alias nix-home="echo To edit home manager run command \'home-edit\'" +alias home-edit="sudoedit /etc/nixos/home.nix" +alias home-upd="home-manager switch" +alias home-update="home-manager switch" +alias cd-nix="cd /etc/nixos/" diff --git a/other/bookmarks-default b/other/bookmarks-default new file mode 100644 index 0000000..ae37bab --- /dev/null +++ b/other/bookmarks-default @@ -0,0 +1,12 @@ +[ + { + name = "Bookmarks Toolbar"; + toolbar = true; + bookmarks = [ + { + name = "NixOS Packages"; + url = "https://search.nixos.org/packages"; + } + ]; + } +] diff --git a/other/colors.sh b/other/colors.sh new file mode 100644 index 0000000..70f3058 --- /dev/null +++ b/other/colors.sh @@ -0,0 +1,16 @@ +NOCOLOR='\033[0m' +RED='\033[0;31m' +GREEN='\033[0;32m' +ORANGE='\033[0;33m' +BLUE='\033[0;34m' +PURPLE='\033[0;35m' +CYAN='\033[0;36m' +LIGHTGRAY='\033[0;37m' +DARKGRAY='\033[1;30m' +LIGHTRED='\033[1;31m' +LIGHTGREEN='\033[1;32m' +YELLOW='\033[1;33m' +LIGHTBLUE='\033[1;34m' +LIGHTPURPLE='\033[1;35m' +LIGHTCYAN='\033[1;36m' +WHITE='\033[1;37m' diff --git a/other/konsave.sh b/other/konsave.sh new file mode 100644 index 0000000..8782a2d --- /dev/null +++ b/other/konsave.sh @@ -0,0 +1,38 @@ +source /etc/nixos/other/colors.sh +FLAG_FILE="/home/cookiez/.flags/theme-flag" + +/run/current-system/sw/bin/konsave -i /etc/nixos/other/theme.knsv +/run/current-system/sw/bin/konsave -i /etc/nixos/other/theme.knsv +/run/current-system/sw/bin/konsave -a theme + +progress_bar() { + local duration=$1 + local interval=0.25 + local total_intervals=$((duration / interval)) + local progress="" + local bar_length=10 + + for ((i=0; i "$FLAG_FILE" + +echo -e "Use ${RED}'sudo reboot -h 0'${NOCOLOR} to successfully apply the theme, if logging out manually ${YELLOW}doesn't${NOCOLOR} work!" +progress_bar 2.5 + +echo "" +echo -n "Do you want to reboot now? (y/n): " +read -r answer +if [ -z "$answer" ] || [ "$answer" = "y" ] || [ "$answer" = "Y" ]; then + echo "Rebooting! ..." + sudo shutdown -r now +else + echo "Make sure to log out/reboot later!" +fi diff --git a/other/pfp.png b/other/pfp.png new file mode 100644 index 0000000..5da2937 Binary files /dev/null and b/other/pfp.png differ diff --git a/other/pfp.sh b/other/pfp.sh new file mode 100644 index 0000000..b6d54af --- /dev/null +++ b/other/pfp.sh @@ -0,0 +1,9 @@ +mkdir -p /var/lib/AccountsService/{icons,users} +cp /etc/nixos/other/pfp.png /var/lib/AccountsService/icons/cookiez +echo -e "[User]\nIcon=/var/lib/AccountsService/icons/cookiez\n" > /var/lib/AccountsService/users/cookiez + +chown root:root /var/lib/AccountsService/users/cookiez +chmod 0600 /var/lib/AccountsService/users/cookiez + +chown root:root /var/lib/AccountsService/icons/cookiez +chmod 0444 /var/lib/AccountsService/icons/cookiez diff --git a/other/sway-config b/other/sway-config new file mode 100644 index 0000000..0d96d73 --- /dev/null +++ b/other/sway-config @@ -0,0 +1,3 @@ +input * { + xkb_layout de +} diff --git a/other/theme-reminder.sh b/other/theme-reminder.sh new file mode 100644 index 0000000..31c2646 --- /dev/null +++ b/other/theme-reminder.sh @@ -0,0 +1,9 @@ +source /etc/nixos/other/colors.sh +FLAG_FILE="/home/cookiez/.flags/theme-flag" + +if [ ! -f "$FLAG_FILE" ]; then + echo -e "${RED}Warning: Make sure to apply the custom system theme!${NOCOLOR} (source '/etc/nixos/other/konsave.sh')" +fi +#else +# echo "Flag file exists - Theme should be applied already!" +#fi diff --git a/other/theme.knsv b/other/theme.knsv new file mode 100644 index 0000000..a48f15b Binary files /dev/null and b/other/theme.knsv differ diff --git a/other/wallpaper.png b/other/wallpaper.png new file mode 100644 index 0000000..e9996f6 Binary files /dev/null and b/other/wallpaper.png differ diff --git a/packages.nix b/packages.nix new file mode 100644 index 0000000..2de2c3d --- /dev/null +++ b/packages.nix @@ -0,0 +1,80 @@ +{config, pkgs, libs, inputs, ...}: +{ + environment.systemPackages = with pkgs; + [ + #Essentials (CLI Only) + wget #A tool for quickly downloading things from the Web + micro-with-xclip + vimPlugins.LazyVim + neovim + #vimPlugins.vim-wayland-clipboard + thefuck #Error correction in case commands are wrong. Type: 'fuck' + jdk23 #Java Development Kit 23 + python312 #Python 3.12 + python312Packages.pip #Pip for Python 3.12 + python312Packages.cmake #The CMake tool to manage project build configurations + fastfetch #A utility to see information about your machine + btop #A replacement for htop, see your machines resources + git #Git ... no need to explain + efibootmgr + zip #A utility for ZIP archives + unzip + rar #A utility for RAR Archives + gnutar #A utility for .tar archives + cron #A tool to set up commands to run scheduled + tmux #A tool to let command windows contiune to run in the background + home-manager #A package to also edit the user Configuration, like with nix + konsave #A package to transfer the look and feel of KDE Plasma to other machines + ocs-url + kdePackages.plasma-workspace + openssh #SSH + zoxide #Alternatice to cd, browse files + fzf-zsh #Search for file names + sway + coreutils-full + multipath-tools + + #Programming + jetbrains.pycharm-community #The PyCharm IDE to edit Python code + jetbrains.idea-community #The IntelliJ IDE to edit Java code + jetbrains.clion #The CLion IDE to edit and compile c/c++ code + racket #The racket Programming language, with DrRacket IDE, for University (*Not* because it's my favourite) + rustup + + #Desktop Applications + vlc + steam + #heroic + #putty Need to find alternative as it sucks on linux + mission-center + trayscale + spotify + rpi-imager + kdePackages.yakuake + atlauncher + discord + whatsapp-for-linux + obs-studio + i2p + gparted + #rustdesk + mediawriter + #inputs.zen-browser.packages.${pkgs.system}.default + realvnc-vnc-viewer + + #CLI tools + eddie #AirVPN client for CLI and Desktop + yt-dlp + tailscale + speedtest-cli + duplicati + ollama + cloudflare-warp + ddrescue +]; + +nixpkgs.config.permittedInsecurePackages = [ + "dotnet-sdk-6.0.428" + "dotnet-runtime-6.0.36" +]; +} diff --git a/virtual-machine.nix b/virtual-machine.nix new file mode 100644 index 0000000..7f2cf67 --- /dev/null +++ b/virtual-machine.nix @@ -0,0 +1,30 @@ +{config, pkgs, ... }: +{ + programs.dconf.enable = true; + + users.users.cookiez.extraGroups = [ "libvirtd" ]; + + environment.systemPackages = with pkgs; [ + virt-manager + virt-viewer + spice + spice-gtk + spice-protocol + win-virtio + win-spice + gnome.adwaita-icon-theme + ]; + + virtualisation = { + libvirtd = { + enable = true; + qemu = { + swtpm.enable = true; + ovmf.enable = true; + ovmf.packages = [ pkgs.OVMFFull.fd ]; + }; + }; + spiceUSBRedirection.enable = true; + }; + services.spice-vdagentd.enable = true; +} diff --git a/zen.nix b/zen.nix new file mode 100644 index 0000000..7cee2fd --- /dev/null +++ b/zen.nix @@ -0,0 +1,55 @@ +{ config, pkgs, inputs, ... }: +let + username = "cookiez"; +in +{ + #Copy from https://github.com/0x006E/dotfiles/blob/main/home.nix + zen-browser = { + enable = true; + package = inputs.zen-browser.packages.${pkgs.system}.default; + profiles = { + ${username} = { + id = 0; + name = "${username}"; + # profileAvatarPath = "chrome://browser/content/zen-avatars/avatar-57.svg"; + path = "${username}.default"; + isDefault = true; + settings = { + + }; + }; + }; + policies = { + PasswordManagerEnabled = false; + ExtensionSettings = + with builtins; + let + extension = shortId: uuid: { + name = uuid; + value = { + install_url = "https://addons.mozilla.org/en-US/firefox/downloads/latest/${shortId}/latest.xpi"; + installation_mode = "normal_installed"; + }; + }; + in + listToAttrs [ + (extension "ublock-origin" "uBlock0@raymondhill.net") + (extension "bitwarden-password-manager" "{446900e4-71c2-419f-a6a7-df9c091e268b}") + #(extension "2fas-two-factor-authentication" "admin@2fas.com") + (extension "sponsorblock" "sponsorBlocker@ajay.app") + #(extension "dearrow" "deArrow@ajay.app") + #(extension "enhancer-for-youtube" "enhancerforyoutube@maximerf.addons.mozilla.org") + #(extension "tabliss" "extension@tabliss.io") + #(extension "don-t-fuck-with-paste" "DontFuckWithPaste@raim.ist") + #(extension "clearurls" "{74145f27-f039-47ce-a470-a662b129930a}") + #(extension "react-devtools" "@react-devtools") + (extension "keepa" "amptra@keepa.com") + ]; + # To add additional extensions, find it on addons.mozilla.org, find + # the short ID in the url (like https=//addons.mozilla.org/en-US/firefox/addon/!SHORT_ID!/) + # Then, download the XPI by filling it in to the install_url template, unzip it, + # run `jq .browser_specific_settings.gecko.id manifest.json` or + # `jq .applications.gecko.id manifest.json` to get the UUID + }; + }; +} diff --git a/zsh.nix b/zsh.nix new file mode 100644 index 0000000..7abcd41 --- /dev/null +++ b/zsh.nix @@ -0,0 +1,29 @@ +{ config, pkgs, ... }: { + programs.zsh = { + enable = true; + + ohMyZsh = { + enable = true; + plugins = [ "git" ]; + }; + + shellInit = '' + source /etc/nixos/other/aliases + source /etc/nixos/other/theme-reminder.sh + ''; + + promptInit = '' + source ${pkgs.zsh-powerlevel10k}/share/zsh-powerlevel10k/powerlevel10k.zsh-theme + ''; + }; + + users.users.cookiez.shell = pkgs.zsh; + environment.systemPackages = [ + pkgs.oh-my-zsh + pkgs.zsh + pkgs.zsh-completions + pkgs.zsh-powerlevel10k + pkgs.zsh-syntax-highlighting + pkgs.zsh-autocomplete + ]; +}