summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJakub Stachurski <j.stachurski@student.utwente.nl>2025-03-29 22:35:21 +0100
committerJakub Stachurski <j.stachurski@student.utwente.nl>2025-03-29 22:36:50 +0100
commit2418424adabca0a1616cca4920221cd67149b65a (patch)
treeb5b237376601cdfbd386ab96be5015fc486147fc
parented0794d5d65c1e15038c308f0a2751a2bcc5cc84 (diff)
Initial commit (Pre-flakes)
-rw-r--r--home-manager/electron_overlay.nix25
-rw-r--r--home-manager/fmod/default.nix29
-rw-r--r--home-manager/home.nix218
-rw-r--r--home-manager/hyprland.nix236
-rw-r--r--home-manager/kitty.nix0
-rw-r--r--home-manager/neovim.nix94
-rw-r--r--home-manager/syncthing.nix11
-rw-r--r--home-manager/theming.nix42
-rw-r--r--home-manager/xdg.nix9
-rw-r--r--nixos/GrubBG.pngbin0 -> 4109858 bytes
-rw-r--r--nixos/configuration.nix314
-rw-r--r--nixos/hardware-configuration.nix156
-rw-r--r--nixos/home-manager.nix4
-rw-r--r--nixos/services.nix3
14 files changed, 1141 insertions, 0 deletions
diff --git a/home-manager/electron_overlay.nix b/home-manager/electron_overlay.nix
new file mode 100644
index 0000000..d91eba0
--- /dev/null
+++ b/home-manager/electron_overlay.nix
@@ -0,0 +1,25 @@
+self:
+let
+ enableWayland = drv: bin: drv.overrideAttrs (
+ old: {
+ nativeBuildInputs = (old.nativeBuildInputs or []) ++ [ self.makeWrapper ];
+ postFixup = (old.postFixup or "") + ''
+ wrapProgram $out/bin/${bin} \
+ --add-flags "--enable-features=UseOzonePlatform" \
+ --add-flags "--ozone-platform=wayland"
+ '';
+ }
+ );
+in
+super:
+ {
+ # slack = enableWayland super.slack "slack";
+ discord = enableWayland super.discord "discord";
+ vencord = enableWayland super.vesktop "vesktop";
+ # vscode = enableWayland super.vscode "code";
+ # google-chrome-beta = (
+ # super.google-chrome-beta.override {
+ # commandLineArgs = "--enable-features=UseOzonePlatform --ozone-platform=wayland";
+ # }
+ # );
+ }
diff --git a/home-manager/fmod/default.nix b/home-manager/fmod/default.nix
new file mode 100644
index 0000000..1c9e942
--- /dev/null
+++ b/home-manager/fmod/default.nix
@@ -0,0 +1,29 @@
+{stdenv, fetchurl }:
+
+stdenv.mkDerivation {
+ name = "fmod-42204";
+ src = if (stdenv.system == "i686-linux") then
+ fetchurl {
+ url = "http://www.fmod.org/index.php/release/version/fmodapi42204linux.tar.gz";
+ sha256 = "64eedc5b37c597eb925de446106d75cab0b5a79697d5ec048d34702812c08563";
+ } else if (stdenv.system == "x86_64-linux") then
+ fetchurl {
+ url = "http://www.fmod.org/index.php/release/version/fmodapi42204linux64.tar.gz";
+ sha256 = "3f2eec8265838a1005febe07c4971660e85010e4622911890642dc438746edf3";
+ } else throw "unsupported platform ${stdenv.system} (only i686-linux and x86_64 linux supported yet)";
+
+ preInstall = ''
+ sed -e /ldconfig/d -i Makefile
+ sed -e s@/usr/local@$out@ -i Makefile
+ sed -e s@/include/fmodex@/include@ -i Makefile
+ mkdir -p $out/lib
+ mkdir -p $out/include
+ '';
+
+ meta = {
+ homepage = "http://www.fmod.org/";
+ description = "Programming library and toolkit for the creation and playback of interactive audio";
+ license = "unfree";
+ };
+}
+
diff --git a/home-manager/home.nix b/home-manager/home.nix
new file mode 100644
index 0000000..243c6d1
--- /dev/null
+++ b/home-manager/home.nix
@@ -0,0 +1,218 @@
+{ config, pkgs, ... }:
+
+{
+ imports = [ ./hyprland.nix ./syncthing.nix ./theming.nix ./neovim.nix ./xdg.nix];
+ nixpkgs.config.allowUnfree = true;
+ nixpkgs.overlays = [
+ (import ./electron_overlay.nix)
+ # (import (builtins.fetchTarball {
+ # url = "https://github.com/nix-community/neovim-nightly-overlay/archive/master.tar.gz";
+ # }))
+ ];
+ # Home Manager needs a bit of information about you and the paths it should
+ # manage.
+ home.username = "wilkuu";
+ home.homeDirectory = "/home/wilkuu";
+
+ # 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 should not change this value, even if you update Home Manager. If you do
+ # want to update the value, then make sure to first check the Home Manager
+ # release notes.
+ home.stateVersion = "23.11"; # Please read the comment before changing.
+
+ # The home.packages option allows you to install Nix packages into your
+ # environment.
+ home.packages = with pkgs; [
+ # Environment
+ hyprpolkitagent
+ hyprsunset
+ xdg-desktop-portal-kde
+ xdg-desktop-portal-hyprland
+ minecraftia
+ inconsolata-nerdfont
+ # Utils
+ networkmanagerapplet
+ blueman
+ htop
+ pwvucontrol
+ wl-clipboard
+ xdg-user-dirs
+ hyprshot
+ mako
+ speedcrunch
+ unzip
+ ripgrep
+ glib
+ gwenview
+
+ # Connectivity
+ firefox
+ floorp
+ thunderbird
+ element-desktop
+
+ # File management
+ pcmanfm
+ xarchiver
+ filelight
+ ranger
+ libsForQt5.kdeconnect-kde
+ sshfs
+
+ #Productivity
+ libreoffice-qt6-fresh
+ zathura
+ obsidian
+
+ # Artistic
+ krita
+ kdenlive
+
+ # Web
+ hugo
+
+ # Scripting
+ python3
+
+ # php
+ php83Packages.composer
+ php
+
+ # java
+ openjdk17-bootstrap
+ gradle
+
+ # Shell
+ zsh
+ alacritty
+
+ # Entertainment
+ spotify
+ prismlauncher
+ ani-cli
+ vlc
+ openttd
+ fluent-reader
+
+ # Finance
+ gnucash
+ # SRS
+ anki-bin
+ mpv
+
+ # Electronics
+
+ gst_all_1.gstreamer
+ # Common plugins like "filesrc" to combine within e.g. gst-launch
+ gst_all_1.gst-plugins-base
+ # Specialized plugins separated by quality
+ gst_all_1.gst-plugins-good
+ gst_all_1.gst-plugins-bad
+ gst_all_1.gst-plugins-ugly
+ # Plugins to reuse ffmpeg to play almost every video format
+ gst_all_1.gst-libav
+ # Support the Video Audio (Hardware) Acceleration API
+ gst_all_1.gst-vaapi
+
+ #Theme
+ qt6Packages.qt6ct
+ kdePackages.qtstyleplugin-kvantum
+ (catppuccin-kvantum.override {
+ accent = "pink";
+ variant = "mocha";
+ })
+
+
+ # # Adds the 'hello' command to your environment. It prints a friendly
+ # # "Hello, world!" when run.
+ # pkgs.hello
+
+ # # It is sometimes useful to fine-tune packages, for example, by applying
+ # # overrides. You can do that directly here, just don't forget the
+ # # parentheses. Maybe you want to install Nerd Fonts with a limited number of
+ # # fonts?
+ # (pkgs.nerdfonts.override { fonts = [ "FantasqueSansMono" ]; })
+
+ # # You can also create simple shell scripts directly inside your
+ # # configuration. For example, this adds a command 'my-hello' to your
+ # # environment:
+ # (pkgs.writeShellScriptBin "my-hello" ''
+ # echo "Hello, ${config.home.username}!"
+ # '')
+
+ ];
+
+ # Home Manager is pretty good at managing dotfiles. The primary way to manage
+ # plain files is through 'home.file'.
+ home.file = {
+ # # Building this configuration will create a copy of 'dotfiles/screenrc' in
+ # # the Nix store. Activating the configuration will then make '~/.screenrc' a
+ # # symlink to the Nix store copy.
+ # ".screenrc".source = dotfiles/screenrc;
+
+ # # You can also set the file content immediately.
+ # ".gradle/gradle.properties".text = ''
+ # org.gradle.console=verbose
+ # org.gradle.daemon.idletimeout=3600000
+ # '';
+ };
+
+ # Home Manager can also manage your environment variables through
+ # 'home.sessionVariables'. These will be explicitly sourced when using a
+ # shell provided by Home Manager. If you don't want to manage your shell
+ # through Home Manager then you have to manually source 'hm-session-vars.sh'
+ # located at either
+ #
+ # ~/.nix-profile/etc/profile.d/hm-session-vars.sh
+ #
+ # or
+ #
+ # ~/.local/state/nix/profiles/profile/etc/profile.d/hm-session-vars.sh
+ #
+ # or
+ #
+ # /etc/profiles/per-user/wilkuu/etc/profile.d/hm-session-vars.sh
+ #
+ home.sessionVariables = {
+ EDITOR = "nvim";
+ XDG_SESSION_TYPE = "wayland";
+ GDK_BACKEND = "wayland";
+ GTK_USE_PORTAL = "1";
+ QT_QPA_PLATFORM = "wayland";
+ QT_STYLE_OVERRIDE = "kvantum";
+ QT_QPA_PLATFORM_THEME = "kvantum";
+ QT_WAYLAND_DISABLE_WINDOWDECORATION = "1";
+ QT_AUTO_SCREEN_SCALE_FACTOR = "1";
+ MOZ_ENABLE_WAYLAND = "1";
+ };
+
+
+ programs.zsh = {
+ enable = true;
+ enableCompletion = true;
+ oh-my-zsh = {
+ enable = true;
+ theme = "clean";
+ };
+ plugins = [
+ {
+ name = "zsh-nix-shell";
+ file = "nix-shell.plugin.zsh";
+ src = pkgs.fetchFromGitHub {
+ owner = "chisui";
+ repo = "zsh-nix-shell";
+ rev = "v0.8.0";
+ sha256 = "1lzrn0n4fxfcgg65v0qhnj7wnybybqzs4adz7xsrkgmcsr0ii8b7";
+ };
+ }
+ ];
+ };
+
+
+ # Let Home Manager install and manage itself.
+ programs.home-manager.enable = true;
+
+}
diff --git a/home-manager/hyprland.nix b/home-manager/hyprland.nix
new file mode 100644
index 0000000..3b1e4fa
--- /dev/null
+++ b/home-manager/hyprland.nix
@@ -0,0 +1,236 @@
+{config, pkgs, ...}:
+{
+ # Hyprland
+ wayland.windowManager.hyprland = {
+ systemd.enable = false;
+ enable = true;
+ xwayland.enable = true;
+ settings = {
+ exec-once = map (s: "uwsm app -- " + s) [
+ "kitty &"
+ "lxqt-policykit-agent &"
+ "waybar &"
+ "nm-applet &"
+ "blueman-tray &"
+ "blueman-applet &"
+ "hyprctl setcursor Catppuccin-Mocha-Dark-Cursors 24"
+ "kdeconnect-indicator &"
+ ] ++ ["uwsm finalize QT_QPA_PLATFORM QT_PLUGIN_PATH"];
+ general = {
+ gaps_in = 3;
+ gaps_out = 8;
+ border_size = 1;
+
+ "col.active_border" = "rgba(ed45b8ee) rgba(611449ee) 45deg";
+ "col.inactive_border" = "rgba(595959aa)";
+
+ resize_on_border = true;
+ allow_tearing = true;
+ layout = "dwindle";
+ };
+
+ animations = {
+ enabled = true;
+ bezier = "myBezier, 0.05, 0.9, 0.1, 1.05";
+ animation = [
+ "windows, 1, 7, myBezier"
+ "windowsOut, 1, 7, default, popin 80%"
+ "border, 1, 10, default"
+ "borderangle, 1, 8, default"
+ "fade, 1, 7, default"
+ "workspaces, 1, 6, default"
+ ];
+ };
+
+ decoration = {
+ rounding = 10;
+
+ # Change transparency of focused and unfocused windows
+ active_opacity = "1.0";
+ inactive_opacity = "1.0";
+
+ # drop_shadow = true;
+ # shadow_range = 4;
+ # shadow_render_power = 3;
+ # "col.shadow" = "rgba(1a1a1aee)";
+
+ # https://wiki.hyprland.org/Configuring/Variables/#blur
+ blur = {
+ enabled = true;
+ size = 3;
+ passes = 1;
+
+ vibrancy = "0.1696";
+ };
+ };
+ dwindle = {
+ pseudotile = true;
+ preserve_split = true;
+ };
+
+ #master = {
+ # new_is_master = true;
+ #};
+ input = {
+ kb_layout = "pl";
+ kb_variant = "";
+ kb_model = "";
+ kb_options = "";
+ kb_rules = "";
+
+ follow_mouse = 1;
+
+ sensitivity = 0; # -1.0 - 1.0, 0 means no modification.
+
+ touchpad = {
+ natural_scroll = true;
+ };
+ };
+ gestures = {
+ workspace_swipe = true;
+ };
+ misc = {
+ force_default_wallpaper = "-1"; # Set to 0 or 1 to disable the anime mascot wallpapers
+ disable_hyprland_logo = false; # If true disables the random hyprland logo / anime girl background. :(
+ };
+ monitor= [ ",preferred,auto,1" ];
+
+ # Mod key
+ "$mod" = "SUPER";
+
+ # Programs
+ "$terminal" = "kitty";
+ "$fileManager" = "pcmanfm";
+ "$menu" = "wofi --show run";
+ "$screenshot" = "hyprshot -m region -f screenshots/screenshot_$(date +'%d-%m-%y_%H-%M-%S').png";
+
+
+ bind = [
+ # Example binds, see https://wiki.hyprland.org/Configuring/Binds/ for more
+ "$mod, RETURN, exec, $terminal"
+ "$mod, Q, killactive,"
+ "$mod SHIFT, M, exec, uwsm stop"
+ "$mod, E, exec, uwsm app -- $fileManager"
+ "$mod, V, togglefloating,"
+ "$mod, R, exec, uwsm app -- $menu"
+ "$mod, P, pseudo"
+ "$mod, J, togglesplit"
+ "$mod, L, exec, uwsm app -- hyprlock"
+ ",Print, exec, uwsm app -- $screenshot "
+
+ # Move focus with mod + arrow keys
+ "$mod, left, movefocus, l"
+ "$mod, right, movefocus, r"
+ "$mod, up, movefocus, u"
+ "$mod, down, movefocus, d"
+
+ # Example special workspace (scratchpad)
+ "$mod, S, togglespecialworkspace, magic"
+ "$mod SHIFT, S, movetoworkspace, special:magic"
+
+ # Scroll through existing workspaces with mod + scroll
+ "$mod, mouse_down, workspace, e+1"
+ "$mod, mouse_up, workspace, e-1"
+ ] ++ (
+ # workspaces
+ # binds $mod + [shift +] {1..10} to [move to] workspace {1..10}
+ builtins.concatLists (builtins.genList (
+ x: let
+ ws = let
+ c = (x + 1) / 10;
+ in
+ builtins.toString (x + 1 - (c * 10));
+ in [
+ "$mod, ${ws}, workspace, ${toString (x + 1)}"
+ "$mod SHIFT, ${ws}, movetoworkspace, ${toString (x + 1)}"
+ ]
+ )
+ 10)
+ );
+
+ bindm = [
+ "$mod, mouse:272, movewindow"
+ "$mod, mouse:273, resizewindow"
+ ];
+
+
+ windowrulev2 = [
+ "suppressevent maximize, class:.*" # You'll probably like this.
+ ];
+
+ source = [
+ "~/.config/hypr/hypr_test.conf"
+ ];
+ };
+ };
+
+ services.hyprpaper = {
+ enable = true;
+ settings = {
+ ipc = "on";
+ splash = false;
+ splash_offset = 2.0;
+
+ preload =
+ [ "/home/wilkuu/Pictures/Wallpapers/peony.png" ];
+ wallpaper= [",/home/wilkuu/Pictures/Wallpapers/peony.png"];
+ };
+ };
+
+ programs.hyprlock = {
+ enable=true;
+ settings = {
+ general = {
+ disable_loading_bar = true;
+ grace = 0;
+ hide_cursor = true;
+ no_fade_in = false;
+ };
+
+ background = [
+ {
+ path = "screenshot";
+ blur_passes = 3;
+ blur_size = 16;
+ }
+ ];
+
+ input-field = [
+ {
+ size = "200, 50";
+ position = "0, -80";
+ monitor = "";
+ dots_center = true;
+ fade_on_empty = false;
+ font_color = "rgb(202, 211, 245)";
+ inner_color = "rgb(91, 96, 120)";
+ outer_color = "rgb(24, 25, 38)";
+ outline_thickness = 5;
+ placeholder_text = "<span foreground=\"##cad3f5\">Password...</span>";
+ shadow_passes = 2;
+ }
+ ];
+ };
+ };
+
+ services.hypridle.enable = true;
+ services.hypridle.settings = {
+ general = {
+ lock_cmd ="pidof hyprlock || hyprlock";
+ before_sleep_cmd="loginctl lock-session";
+ ignore_dbus_inhibit=false;
+ after_sleep_cmd="hyprctl_dispatch dpms on";
+ };
+ listener = [
+ {
+ timeout = 30;
+ on-timeout = "hyprlock";
+ }
+ {
+ timeout = 90;
+ on-timeout = "hyprctl dispatch dpms off";
+ on-resume = "hyprctl dispatch dpms on";
+ }
+ ];
+ };
+}
diff --git a/home-manager/kitty.nix b/home-manager/kitty.nix
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/home-manager/kitty.nix
diff --git a/home-manager/neovim.nix b/home-manager/neovim.nix
new file mode 100644
index 0000000..7b1554e
--- /dev/null
+++ b/home-manager/neovim.nix
@@ -0,0 +1,94 @@
+{ pkgs, config, ...}:
+let
+ unstable = import <nixos-unstable> {};
+ treesitterWithGrammars = (unstable.vimPlugins.nvim-treesitter.withPlugins (p : [
+ p.bash
+ p.comment
+ p.css
+ p.dockerfile
+ p.gitattributes
+ p.gitignore
+ p.go
+ p.gomod
+ p.gowork
+ p.rust
+ p.javascript
+ p.typescript
+ p.json5
+ p.json
+ p.lua
+ p.markdown
+ p.nix
+ p.python
+ p.java
+ p.rust
+ p.toml
+ p.vue
+ p.yaml
+ p.php
+ p.latex
+ ]));
+ treesitter-parsers = pkgs.symlinkJoin {
+ name = "treesitter-parsers";
+ paths = treesitterWithGrammars.dependencies;
+ };
+
+in
+{
+ programs.neovim = {
+ enable = true;
+ # package = unstable.neovim;
+ defaultEditor = true;
+ viAlias = true;
+ vimAlias = true;
+ # vimdiffAlias = true;
+ # # withPython3 = false;
+ # # withNodeJs = false;
+ # # withRuby = false;
+ #
+ coc.enable = false;
+ #
+ plugins = [
+ treesitterWithGrammars
+ ];
+ };
+
+ home.file."./.config/nvim/lua/wilkuu/init.lua".text = ''
+ require("wilkuu.set")
+ require("wilkuu.remap")
+ '';
+ #vim.opt.runtimepath:append("${treesitter-parsers}")
+
+ home.file."./.config/nvim/lua/wilkuu/nix.lua".text = ''
+ return {
+ vue_ts_plugin = "/home/wilkuu/.npm/@vue/typescript-plugin",
+ }
+ '';
+
+
+ # home.file."./.local/share/nvim/nix/nvim-treesitter/" = {
+ # source = treesitterWithGrammars;
+ # recursive = true;
+ # };
+
+ home.sessionPath = [
+ "/home/wilkuu/.npm/bin/"
+ ];
+
+ home.packages = with pkgs; [
+ lua
+ lua-language-server
+ gopls
+ go
+ typescript
+ nodejs_22
+ rustup
+ nixd
+ nixfmt-rfc-style
+ pyright
+ nodePackages.intelephense
+ texlive.combined.scheme-full
+ texlab
+ ];
+
+}
diff --git a/home-manager/syncthing.nix b/home-manager/syncthing.nix
new file mode 100644
index 0000000..f917d86
--- /dev/null
+++ b/home-manager/syncthing.nix
@@ -0,0 +1,11 @@
+{ config, pkgs, ... }:
+{
+ services.syncthing = {
+ enable = true;
+ tray = {
+ enable = true;
+ command = "syncthingtray --wait";
+ };
+ };
+}
+
diff --git a/home-manager/theming.nix b/home-manager/theming.nix
new file mode 100644
index 0000000..db2c9db
--- /dev/null
+++ b/home-manager/theming.nix
@@ -0,0 +1,42 @@
+{ config, pkgs, ... }:
+let
+ catppuccin_gtk = pkgs.catppuccin-gtk.override {
+ accents = ["pink"];
+ size = "compact";
+ tweaks = ["black"];
+ variant = "mocha";
+ };
+in
+{
+ #Gtk Theming
+ gtk = {
+ enable=true;
+ theme = {
+ package= catppuccin_gtk;
+ name="catppuccin-mocha-pink-compact+black";
+ };
+ iconTheme = {
+ package = pkgs.catppuccin-papirus-folders;
+ name = "Papirus-Dark";
+ };
+ };
+
+
+ home.pointerCursor = {
+ gtk.enable = true;
+ package = pkgs.catppuccin-cursors.mochaDark;
+ name = "catppuccin-mocha-dark-cursors";
+ size = 32;
+ };
+
+ qt = {
+ enable = true;
+ platformTheme.name = "qtct";
+ style.name="kvantum";
+ };
+
+ xdg.configFile."Kvantum/kvantum.kvconfig".source = (pkgs.formats.ini {}).generate "kvantum.kvconfig" {
+ General.theme = "Catppuccin-Mocha-Pink";
+ };
+
+}
diff --git a/home-manager/xdg.nix b/home-manager/xdg.nix
new file mode 100644
index 0000000..6b55023
--- /dev/null
+++ b/home-manager/xdg.nix
@@ -0,0 +1,9 @@
+{ config, pkgs, ... }:
+{
+ xdg.mimeApps.defaultApplications = {
+ "application/zip" = [ "xarchiver.desktop" ];
+ "application/x-krita" = [ "krita.desktop" ];
+ "image/*" = [ "gwenview.desktop" "krita.desktop"];
+ "inode/directory" = [ "pcmanfm.desktop" "filelight.desktop" "kitty.desktop"];
+ };
+}
diff --git a/nixos/GrubBG.png b/nixos/GrubBG.png
new file mode 100644
index 0000000..0f5028f
--- /dev/null
+++ b/nixos/GrubBG.png
Binary files differ
diff --git a/nixos/configuration.nix b/nixos/configuration.nix
new file mode 100644
index 0000000..b4bd651
--- /dev/null
+++ b/nixos/configuration.nix
@@ -0,0 +1,314 @@
+# Edit this configuration file to define what should be installed on
+# your system. Help is available in the configuration.nix(5) man page, on
+# https://search.nixos.org/options and in the NixOS manual (`nixos-help`).
+
+{ config, lib, pkgs, ... }:
+{
+ imports =
+ [ # Include the results of the hardware scan.
+ ./hardware-configuration.nix
+ <home-manager/nixos>
+ ./home-manager.nix
+ ./services.nix
+ ];
+
+ nix.settings.experimental-features = [ "nix-command" "flakes" ];
+
+ # Use the systemd-boot EFI boot loader.
+ # boot.loader.systemd-boot.enable = true;
+ boot.loader.grub = {
+ useOSProber = true;
+ device = "nodev";
+
+
+ efiSupport = true;
+ default = "saved";
+ memtest86.enable = true;
+ splashImage = ./GrubBG.png;
+ };
+ boot.loader.efi.canTouchEfiVariables = true;
+ boot.crashDump.enable = false;
+ boot.plymouth = {
+ enable = true;
+ theme = "bgrt";
+ };
+
+ boot.kernelParams = [
+ "quiet"
+ "splash"
+ "loglevel=3"
+ "rd.systemd.show_status=false"
+ "rd.udev.log_level=3"
+ "udev.logpriority=3"
+ ];
+ boot.consoleLogLevel = 0;
+
+ networking.hostName = "icetea-dispenser"; # 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 = "Europe/Amsterdam";
+
+ # 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 xkb.options in tty.
+ # };
+
+ # Enable the X11 windowing system.
+ programs.nix-ld.enable = true;
+
+ services.printing.enable = true;
+ documentation.dev.enable = true;
+ services.displayManager.sddm ={
+ #package = pkgs.kdePackages.sddm;
+ enable = true;
+ wayland.enable = true;
+ theme="catppuccin-mocha";
+ };
+ services.xserver.exportConfiguration = true; # This makes it easy to search for a valid keymap
+ # Enable KDE6 env in case Hyprland gets borked.
+ # services.desktopManager.plasma6.enable = true;
+ programs.hyprland.enable = true;
+ programs.hyprland.withUWSM = true;
+ programs.uwsm = {
+ enable = true;
+ waylandCompositors ={
+ hyprland = {
+ prettyName = "Hyprland";
+ comment = "Hyprland compositor managed by UWSM";
+ binPath = "/run/current-system/sw/bin/Hyprland";
+ };
+ };
+ };
+
+ nixpkgs.config.allowUnfree = true;
+
+ # Configure keymap in X11
+ # services.xserver.xkb.layout = "us";
+ # services.xserver.xkb.options = "eurosign:e,caps:escape";
+
+ # Enable CUPS to print documents.
+ # services.printing.enable = true;
+
+ # Enable sound.
+ # hardware.pulseaudio.enable = true;
+ # OR
+ services.pipewire = {
+ enable = true;
+ pulse.enable = true;
+ };
+
+ # Enable touchpad support (enabled default in most desktopManager).
+ # services.libinput.enable = true;
+
+ # Define a user account. Don't forget to set a password with ‘passwd’.
+ programs.zsh.enable = true;
+ users.defaultUserShell = pkgs.zsh;
+ users.users.wilkuu = {
+ isNormalUser = true;
+ extraGroups = [ "wheel" "networkmanager" "input" "docker" "adbusers" "libvirtd" ]; # Enable ‘sudo’ for the user.
+ packages = with pkgs; [
+ firefox
+ nano
+ ];
+ };
+
+ xdg.portal = {
+ enable = true;
+ config = {
+ common = {
+ default = [
+ "hyprland"
+ "gtk"
+ ];
+ };
+ };
+ };
+
+ # List packages installed in system profile. To search, run:
+ # $ nix search wget
+ environment.systemPackages = with pkgs; [
+ zsh
+ busybox
+ usbutils
+ libsForQt5.qtstyleplugins
+ xdg-desktop-portal-hyprland
+ xdg-desktop-portal-gtk
+ qt6.qtwayland
+ #qt5.qtwayland
+ kdePackages.sddm-kcm
+ sddm
+ # neovim # Do not forget to add an editor to edit configuration.nix! The Nano editor is also installed by default.
+ nano
+ wget
+ git
+ tree
+ alacritty
+ kitty
+ docker
+ home-manager
+ wofi
+ waybar
+ waybar-mpris
+ vesktop
+ wineWowPackages.waylandFull
+ thunderbolt
+ catppuccin-sddm
+ kdePackages.kwallet
+ kdePackages.kwalletmanager
+
+ virt-viewer
+ spice
+ spice-gtk
+ spice-protocol
+ win-virtio
+ win-spice
+ gnome.adwaita-icon-theme
+ ];
+
+ environment.variables = {
+ QT_STYLE_OVERRIDE = "kvantum";
+ QT_QPA_PLATFORM="wayland";
+ QT_QPA_PLATFORM_PATH="${pkgs.qt6.qtbase}/lib/qt-${pkgs.qt6.qtbase.version}/plugins/platform";
+ };
+
+ programs.adb.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;
+
+ # 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 option defines the first version of NixOS you have installed on this particular machine,
+ # and is used to maintain compatibility with application data (e.g. databases) created on older NixOS versions.
+ #
+ # Most users should NEVER change this value after the initial install, for any reason,
+ # even if you've upgraded your system to a new NixOS release.
+ #
+ # This value does NOT affect the Nixpkgs version your packages and OS are pulled from,
+ # so changing it will NOT upgrade your system - see https://nixos.org/manual/nixos/stable/#sec-upgrading for how
+ # to actually do that.
+ #
+ # This value being lower than the current NixOS release does NOT mean your system is
+ # out of date, out of support, or vulnerable.
+ #
+ # Do NOT change this value unless you have manually inspected all the changes it would make to your configuration,
+ # and migrated your data accordingly.
+ #
+ # For more information, see `man configuration.nix` or https://nixos.org/manual/nixos/stable/options#opt-system.stateVersion .
+ system.stateVersion = "24.05"; # Did you read the comment?
+
+ # steam goes here
+ programs.steam = {
+ enable = true;
+ protontricks.enable = true;
+ };
+
+ # Fonts
+fonts.packages = with pkgs; [
+ noto-fonts
+ noto-fonts-cjk-sans
+ font-awesome
+ noto-fonts-emoji
+ # (nerdfonts.override {fonts = [ "Hermit" ];})
+ nerdfonts
+];
+
+ # Input, note the waylandFrontend line
+ i18n.inputMethod = {
+ type = "fcitx5";
+ enable = true;
+ fcitx5.waylandFrontend = true;
+ fcitx5.addons = with pkgs; [
+ kdePackages.fcitx5-qt
+ fcitx5-mozc
+ ];
+ };
+
+ # Bluetooth
+ hardware.bluetooth.enable = true;
+ hardware.bluetooth.settings = {
+ General = {Enable = "Source,Sink,Media,Socket";};
+ };
+
+ hardware.bluetooth.powerOnBoot = true;
+ services.blueman.enable = true;
+
+ services.avahi = {
+ enable = true;
+ nssmdns = true;
+ publish = {
+ enable = true;
+ };
+ };
+
+
+ systemd.user.services.mpris-proxy = {
+ description = "Mpris proxy";
+ after = [ "network.target" "sound.target" ];
+ wantedBy = [ "default.target" ];
+ serviceConfig.ExecStart = "${pkgs.bluez}/bin/mpris-proxy";
+ };
+
+
+ #services.fprintd.enable = true;
+ #security.pam.services.login.fprintAuth = true;
+ security.pam.services = {
+ kdm.enableKwallet = true;
+ lightdm.enableKwallet = true;
+ sddm.enableKwallet = true;
+ slim.enableKwallet = true;
+ };
+
+ programs.weylus = {
+ enable=true;
+ openFirewall=true;
+ users=["wilkuu"];
+ };
+
+ ## VM's
+ programs.dconf.enable = true;
+ programs.virt-manager.enable = true;
+ virtualisation = {
+ docker.enable = true;
+ libvirtd = {
+ enable = true;
+ qemu = {
+ swtpm.enable = true;
+ vhostUserPackages = with pkgs; [ virtiofsd ];
+ ovmf.enable = true;
+ ovmf.packages = [ pkgs.OVMFFull.fd ];
+ };
+ };
+ spiceUSBRedirection.enable = true;
+ };
+ services.spice-vdagentd.enable = true;
+}
diff --git a/nixos/hardware-configuration.nix b/nixos/hardware-configuration.nix
new file mode 100644
index 0000000..f321cd0
--- /dev/null
+++ b/nixos/hardware-configuration.nix
@@ -0,0 +1,156 @@
+# 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" "usbhid" "usb_storage" "sd_mod" "sdhci_pci" ];
+ boot.initrd.kernelModules = [ ];
+ boot.kernelModules = [ "kvm-intel" ];
+ boot.extraModulePackages = [ ];
+ boot.supportedFilesystems = [ "ntfs" "btrfs" "vfat" ];
+ # GRUB 2 with UEFI example, chainloading another distro
+ boot.loader.grub.extraEntries =
+ ''
+menuentry 'UEFI Firmware' $menuentry_id_option 'uefi-firmware' {
+ fwsetup
+}
+ '';
+ fileSystems."/" =
+ { device = "/dev/disk/by-uuid/f75781bf-b2bf-4bb0-915d-95193e8eee9e";
+ fsType = "btrfs";
+ options = [ "noatime" "compress=zstd" "subvol=root" ];
+ };
+
+ fileSystems."/home" =
+ { device = "/dev/disk/by-uuid/f75781bf-b2bf-4bb0-915d-95193e8eee9e";
+ fsType = "btrfs";
+ options = [ "noatime" "compress=zstd" "subvol=home" ];
+ };
+
+ fileSystems."/nix" =
+ { device = "/dev/disk/by-uuid/f75781bf-b2bf-4bb0-915d-95193e8eee9e";
+ fsType = "btrfs";
+ options = [ "noatime" "compress=zstd" "subvol=nix" ];
+ };
+
+ fileSystems."/snapshots" =
+ { device = "/dev/disk/by-uuid/f75781bf-b2bf-4bb0-915d-95193e8eee9e";
+ fsType = "btrfs";
+ options = [ "noatime" "compress=zstd" "subvol=snapshots" ];
+ };
+
+ fileSystems."/boot" =
+ { device = "/dev/disk/by-uuid/6E1A-07F4";
+ fsType = "vfat";
+ options = [ "fmask=0077" "dmask=0077" ];
+ };
+
+ fileSystems."/store2" =
+ { device = "/dev/disk/by-uuid/5368282f-c09d-44cf-9cf2-e69a2d415da6";
+ fsType = "btrfs";
+ options = [ "noatime" "compress=zstd" "subvol=/"];
+ };
+ fileSystems."/store1" =
+ { device = "/dev/disk/by-uuid/6A2E2BFF2E2BC2C5";
+ fsType = "ntfs-3g" ;
+ options = ["rw" "uid=1000" "gid=100"];
+ };
+ fileSystems."/win_games" =
+ { device = "/dev/disk/by-uuid/6A680789680752ED";
+ fsType = "ntfs-3g" ;
+ options = ["rw" "uid=1000" "gid=100"];
+ };
+
+
+
+ swapDevices =
+ [ { device = "/dev/disk/by-uuid/f1dfc6a1-55f3-4148-9f1d-2a998c3b3168"; }
+ { device = "/dev/disk/by-uuid/003a819a-e06e-45df-bef6-b3702c2ddb48"; }
+ ];
+
+ # Thunderbolt
+ services.hardware.bolt.enable = true;
+ powerManagement.enable = true;
+
+ # 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.nameservers = [ "1.1.1.1#one.one.one.one" "1.0.0.1#one.one.one.one" ];
+
+ services.resolved = {
+ enable = true;
+ dnssec = "false";
+ domains = [ "~." ];
+ fallbackDns = [ ];
+ dnsovertls = "opportunistic";
+ };
+
+
+ networking.useDHCP = lib.mkDefault true;
+ networking.firewall.checkReversePath = false;
+
+ # networking.interfaces.enp0s31f6.useDHCP = lib.mkDefault true;
+ # networking.interfaces.enp81s0u1u4.useDHCP = lib.mkDefault true;
+ # networking.interfaces.wlp0s20f3.useDHCP = lib.mkDefault true;
+
+ nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux";
+ hardware.cpu.intel.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware;
+
+ # Enable OpenGL
+ hardware.graphics = {
+ enable = true;
+ };
+
+ # Load nvidia driver for Xorg and Wayland
+ services.xserver.videoDrivers = ["nvidia"];
+
+ hardware.nvidia = {
+
+ # Modesetting is required.
+ modesetting.enable = true;
+
+ # Nvidia power management. Experimental, and can cause sleep/suspend to fail.
+ # Enable this if you have graphical corruption issues or application crashes after waking
+ # up from sleep. This fixes it by saving the entire VRAM memory to /tmp/ instead
+ # of just the bare essentials.
+ powerManagement.enable = false;
+
+ # Fine-grained power management. Turns off GPU when not in use.
+ # Experimental and only works on modern Nvidia GPUs (Turing or newer).
+ powerManagement.finegrained = false;
+
+ # Use the NVidia open source kernel module (not to be confused with the
+ # independent third-party "nouveau" open source driver).
+ # Support is limited to the Turing and later architectures. Full list of
+ # supported GPUs is at:
+ # https://github.com/NVIDIA/open-gpu-kernel-modules#compatible-gpus
+ # Only available from driver 515.43.04+
+ # Currently alpha-quality/buggy, so false is currently the recommended setting.
+ open = false;
+
+ # Enable the Nvidia settings menu,
+ # accessible via `nvidia-settings`.
+ nvidiaSettings = false;
+
+ # Optionally, you may need to select the appropriate driver version for your specific GPU.
+ package = config.boot.kernelPackages.nvidiaPackages.production;
+
+ prime = {
+ offload = {
+ enable = true;
+ enableOffloadCmd = true;
+ };
+
+ sync.enable = false;
+
+ intelBusId = "PCI:1:0:0";
+ nvidiaBusId = "PCI:0:2:0";
+ };
+ };
+}
diff --git a/nixos/home-manager.nix b/nixos/home-manager.nix
new file mode 100644
index 0000000..6e76671
--- /dev/null
+++ b/nixos/home-manager.nix
@@ -0,0 +1,4 @@
+{config, pkgs, ...}:
+{
+ users.users.wilkuu.isNormalUser = true;
+}
diff --git a/nixos/services.nix b/nixos/services.nix
new file mode 100644
index 0000000..c7fac0e
--- /dev/null
+++ b/nixos/services.nix
@@ -0,0 +1,3 @@
+{config, lib, pkgs, ...}:
+{
+}