commit 2bb359c70c06dff15517b272f16351d37af61ce7 Author: Alex Blank Date: Thu Jul 10 14:28:15 2025 +0200 initial comit diff --git a/common.nix b/common.nix new file mode 100644 index 0000000..4cf1019 --- /dev/null +++ b/common.nix @@ -0,0 +1,54 @@ +{ config, pkgs, ... }: + +{ + system.stateVersion = "25.05"; + nix.settings.experimental-features = [ "nix-command" "flakes" ]; + + # time and localization + 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"; + }; + + # Allow unfree packages + nixpkgs.config.allowUnfree = true; + + # networking + networking.networkmanager.enable = true; + networking.firewall.enable = true; + services.openssh.enable = true; + + # auth stuff + security.polkit.enable = true; + + # keyring setup + programs.seahorse.enable = true; + services.gnome.gnome-keyring.enable = true; + + # shells + programs.fish.enable = true; + + + environment.systemPackages = with pkgs; [ + # basics + git + wget + vim + neovim + + seahorse + + # terminal related + alacritty + ranger + htop + ]; +} diff --git a/configuration.bak.nix b/configuration.bak.nix new file mode 100644 index 0000000..4d8cba4 --- /dev/null +++ b/configuration.bak.nix @@ -0,0 +1,169 @@ +{ config, pkgs, lib, inputs, ... }: + +{ + imports = + [ # Include the results of the hardware scan. + ./hardware-configuration.nix + inputs.home-manager.nixosModules.default + ]; + + nix.settings.experimental-features = [ "nix-command" "flakes"]; + + # Bootloader. + boot.loader.systemd-boot.enable = true; + boot.loader.efi.canTouchEfiVariables = true; + + 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"; + + virtualisation.virtualbox.guest.enable = true; + + # 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. + services.xserver.enable = true; + + # Enable the GNOME Desktop Environment. + services.xserver.displayManager.gdm.enable = true; + services.xserver.desktopManager.gnome.enable = true; + + # Configure keymap in X11 + services.xserver.xkb = { + layout = "us"; + variant = "intl"; + }; + + # Configure console keymap + console.keyMap = "us-acentos"; + + # 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.alex = { + isNormalUser = true; + description = "alex"; + extraGroups = [ "networkmanager" "wheel" ]; + packages = with pkgs; [ + # thunderbird + ]; + }; + + home-manager = { + # also pass inputs to home-manager modules + extraSpecialArgs = {inherit inputs;}; + users = { + "username" = import ./home.nix; + }; + }; + + # Install firefox. + programs.firefox.enable = true; + + # Allow unfree packages + nixpkgs.config.allowUnfree = true; + + # List packages installed in system profile. To search, run: + # $ nix search wget + environment.systemPackages = with pkgs; [ + + # basics + vim + wget + fish + + # terminal + lf + ranger + + # display manager + ly + wayland + sway + + # basic desktop + rofi + waybar + mako + nwg-displays + + # rofi related + rofi-bluetooth + networkmanager_dmenu + + # basic apps + alacritty + + + ]; + + # 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; + + # 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/flake.lock b/flake.lock new file mode 100644 index 0000000..2b4f72a --- /dev/null +++ b/flake.lock @@ -0,0 +1,65 @@ +{ + "nodes": { + "home-manager": { + "inputs": { + "nixpkgs": [ + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1726989464, + "narHash": "sha256-Vl+WVTJwutXkimwGprnEtXc/s/s8sMuXzqXaspIGlwM=", + "owner": "nix-community", + "repo": "home-manager", + "rev": "2f23fa308a7c067e52dfcc30a0758f47043ec176", + "type": "github" + }, + "original": { + "owner": "nix-community", + "ref": "release-24.05", + "repo": "home-manager", + "type": "github" + } + }, + "nixpkgs": { + "locked": { + "lastModified": 1751943650, + "narHash": "sha256-7orTnNqkGGru8Je6Un6mq1T8YVVU/O5kyW4+f9C1mZQ=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "88983d4b665fb491861005137ce2b11a9f89f203", + "type": "github" + }, + "original": { + "id": "nixpkgs", + "ref": "nixos-25.05", + "type": "indirect" + } + }, + "nixpkgs-unstable": { + "locked": { + "lastModified": 1751984180, + "narHash": "sha256-LwWRsENAZJKUdD3SpLluwDmdXY9F45ZEgCb0X+xgOL0=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "9807714d6944a957c2e036f84b0ff8caf9930bc0", + "type": "github" + }, + "original": { + "owner": "nixos", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "root": { + "inputs": { + "home-manager": "home-manager", + "nixpkgs": "nixpkgs", + "nixpkgs-unstable": "nixpkgs-unstable" + } + } + }, + "root": "root", + "version": 7 +} diff --git a/flake.nix b/flake.nix new file mode 100644 index 0000000..24c884a --- /dev/null +++ b/flake.nix @@ -0,0 +1,25 @@ +{ + description = "NixOS config with modules, host overrides, and Home Manager"; + + inputs = { + nixpkgs.url = "nixpkgs/nixos-25.05"; + nixpkgs-unstable.url = "github:nixos/nixpkgs/nixos-unstable"; + home-manager.url = "github:nix-community/home-manager/release-24.05"; + home-manager.inputs.nixpkgs.follows = "nixpkgs"; + }; + + outputs = { self, nixpkgs, home-manager, ... }: { + nixosConfigurations = { + dev-vm = nixpkgs.lib.nixosSystem { + system = "x86_64-linux"; + specialArgs = { + inherit home-manager; + }; + modules = [ + ./common.nix + ./hosts/dev-vm/default.nix + ]; + }; + }; + }; +} diff --git a/home-manager/.rofi.nix.swp b/home-manager/.rofi.nix.swp new file mode 100644 index 0000000..de21e5d Binary files /dev/null and b/home-manager/.rofi.nix.swp differ diff --git a/home-manager/common.nix b/home-manager/common.nix new file mode 100644 index 0000000..63eed56 --- /dev/null +++ b/home-manager/common.nix @@ -0,0 +1,15 @@ +{ config, pkgs, ... }: + +{ + home.packages = with pkgs; [ + git + starship + ]; + + programs.git = { + enable = true; + }; + + home.stateVersion = "24.05"; +} + diff --git a/home-manager/rofi.nix b/home-manager/rofi.nix new file mode 100644 index 0000000..5fb2a27 --- /dev/null +++ b/home-manager/rofi.nix @@ -0,0 +1,26 @@ +{ config, lib, pkgs, ... }: + +{ + home.packages= with pkgs; [ + rofi-wayland + rofi-bluetooth + networkmanager_dmenu + ]; + programs.rofi = { + enable = true; + package = pkgs.rofi-wayland; + theme = "glue_pro_blue"; + terminal = "${pkgs.alacritty}/bin/alacritty"; + + extraConfig = { + modi = "combi,window,drun,ssh"; + show-icons = true; + drun-display-format = "{icon} {name}"; + disable-history = false; + hide-scrollbar = true; + display-drun = "  Apps "; + sidebar-mode = true; + }; + }; +} + diff --git a/home-manager/sway.nix b/home-manager/sway.nix new file mode 100644 index 0000000..3500b18 --- /dev/null +++ b/home-manager/sway.nix @@ -0,0 +1,209 @@ +{ config, pkgs, lib, ... }: + +let + # define some constants + mod = "Mod4"; + alt = "Mod1"; + num_workspaces = 9; + ws = builtins.listToAttrs (builtins.genList (n: { + name = "ws${toString (n + 1)}"; + value = toString (n + 1); + }) num_workspaces); +in +{ + wayland.windowManager.sway = { + enable = true; + wrapperFeatures.gtk = true; + + config = rec { + modifier = mod; + terminal = "alacritty"; + fonts = { + names = [ "MesloLGS NF" ]; + size = 11.0; + }; + input = { + "type:touchpad" = { + tap = "enabled"; + natural_scroll = "enabled"; + tap_button_map = "lrm"; + }; + "type:keyboard" = { + xkb_layout = "us"; + xkb_variant = "intl"; + }; + }; + + gaps = { + inner = 8; + outer = -4; + smartGaps = true; + smartBorders = "on"; + }; + + keybindings = lib.mkOptionDefault { + "${mod}+Return" = "exec alacritty --command tmux"; + "${mod}+Ctrl+Return" = "exec alacritty"; + "${mod}+Shift+Return" = "exec rofi -show combi"; + + "${mod}+Print" = "exec flameshot full -c"; + "${mod}+Shift+Print" = "exec flameshot gui"; + "${mod}+Ctrl+Shift+Print" = "exec simplescreenrecorder --start-hidden --start-recording"; + + "XF86AudioLowerVolume" = "exec pamixer --decrease 5"; + "XF86AudioRaiseVolume" = "exec pamixer --increase 5"; + "XF86AudioMute" = "exec pamixer -t"; + "${mod}+XF86AudioMute" = "exec pactl set-source-mute @DEFAULT_SOURCE@ toggle"; + + "XF86AudioPlay" = "exec playerctl play-pause"; + "XF86AudioNext" = "exec playerctl next"; + "XF86AudioPrev" = "exec playerctl previous"; + "${mod}+XF86AudioRaiseVolume" = "exec playerctl next"; + "${mod}+XF86AudioLowerVolume" = "exec playerctl previous"; + + "XF86MonBrightnessUp" = "exec light -A 5; notify-send 'Brightness set to $(light)'"; + "XF86MonBrightnessDown" = "exec light -U 5; notify-send 'Brightness set to $(light)'"; + "${mod}+XF86MonBrightnessDown" = "exec light -S 0.2; notify-send 'Brightness set to min'"; + "${mod}+XF86MonBrightnessUp" = "exec light -S 100; notify-send 'Brightness set to max'"; + + "XF86Calculator" = "exec qalculate-gtk"; + + "${mod}+Shift+c" = "kill"; + + "${mod}+u" = "border none"; + "${mod}+y" = "border pixel 1"; + "${mod}+n" = "border normal"; + + "${mod}+h" = "focus left"; + "${mod}+j" = "focus down"; + "${mod}+k" = "focus up"; + "${mod}+l" = "focus right"; + "${mod}+Left" = "focus left"; + "${mod}+Down" = "focus down"; + "${mod}+Up" = "focus up"; + "${mod}+Right" = "focus right"; + + "${mod}+Shift+h" = "move left"; + "${mod}+Shift+j" = "move down"; + "${mod}+Shift+k" = "move up"; + "${mod}+Shift+l" = "move right"; + "${mod}+Shift+Left" = "move left"; + "${mod}+Shift+Down" = "move down"; + "${mod}+Shift+Up" = "move up"; + "${mod}+Shift+Right" = "move right"; + + "${mod}+b" = "workspace back_and_forth"; + "${mod}+Shift+b" = "move container to workspace back_and_forth; workspace back_and_forth"; + "${mod}+Ctrl+Right" = "workspace next"; + "${mod}+Ctrl+Left" = "workspace prev"; + + "${mod}+Shift+minus" = "move scratchpad"; + "${mod}+minus" = "scratchpad show"; + + "${mod}+z" = "split h; exec notify-send 'Tile horizontally'"; + "${mod}+v" = "split v; exec notify-send 'Tile vertically'"; + "${mod}+q" = "split toggle"; + "${mod}+f" = "fullscreen toggle"; + "${mod}+s" = "layout stacking"; + "${mod}+w" = "layout tabbed"; + "${mod}+e" = "layout toggle split"; + "${mod}+Shift+space" = "floating toggle"; + "${mod}+space" = "focus mode_toggle"; + "${mod}+Shift+s" = "sticky toggle"; + "${mod}+a" = "focus parent"; + + "${mod}+Ctrl+l" = "exec i3lock -c 000000"; + "${mod}+Shift+r" = "reload"; + } // builtins.listToAttrs (builtins.concatMap (n: let + key = toString (n + 1); + in [ + { + name = "${mod}+${key}"; + value = "workspace ${key}"; + } + { + name = "${mod}+Ctrl+${key}"; + value = "move container to workspace ${key}"; + } + { + name = "${mod}+Shift+${key}"; + value = "move container to workspace ${key}; workspace ${key}"; + } + ]) (lib.range 0 8)); + + assigns = { + "2: web" = [{ class = "^Brave$"; }]; + "9: mail" = [{ class = "Thunderbird"; }]; + }; + + modes = { + resize = { + "h" = "resize shrink width 4 px or 4 ppt"; + "j" = "resize grow height 4 px or 4 ppt"; + "k" = "resize shrink height 4 px or 4 ppt"; + "l" = "resize grow width 4 px or 4 ppt"; + "Left" = "resize shrink width 10 px or 10 ppt"; + "Down" = "resize grow height 10 px or 10 ppt"; + "Up" = "resize shrink height 10 px or 10 ppt"; + "Right" = "resize grow width 10 px or 10 ppt"; + "Return" = "mode default"; + "Escape" = "mode default"; + }; + }; + + colors = { + focused = { + border = "#ff8800"; + background = "#2F3D44"; + text = "#FF8800"; + indicator = "#FDF6E3"; + childBorder = "#ff8800"; + }; + focusedInactive = { + border = "#333333"; + background = "#222222"; + text = "#444444"; + indicator = "#454948"; + childBorder = "#222222"; + }; + unfocused = { + border = "#2F3D44"; + background = "#2F3D44"; + text = "#FF8800"; + indicator = "#454948"; + childBorder = "#222222"; + }; + urgent = { + border = "#CB4B16"; + background = "#FDF6E3"; + text = "#FF8800"; + indicator = "#268BD2"; + childBorder = "#222222"; + }; + placeholder = { + border = "#000000"; + background = "#0c0c0c"; + text = "#ffffff"; + indicator = "#000000"; + childBorder = "#222222"; + }; + background = "#2B2C2B"; + }; + }; + extraConfig = '' + default_border none + floating_modifier ${mod} + + # === Floating Windows === + for_window [title="alsamixer"] floating enable border pixel 1 + for_window [title="Qalculate!"] floating enable border normal + for_window [class="Psensor"] floating enable border normal + for_window [title="lxrandr"] floating enable border normal + for_window [class="Blueman-manager"] floating enable border normal + for_window [class="GParted"] floating enable border normal + for_window [class="pavucontrol"] floating enable + for_window [class="Volume Control"] floating enable + for_window [class="(?i)VirtualBox"] floating enable border normal + ''; + }; +} diff --git a/home-manager/waybar.nix b/home-manager/waybar.nix new file mode 100644 index 0000000..e48ed88 --- /dev/null +++ b/home-manager/waybar.nix @@ -0,0 +1,190 @@ +{ config, lib, pkgs, ... }: +{ + home.packages = with pkgs; [ + waybar + ]; + programs.waybar = { + enable = true; + settings = { + mainBar = { + layer = "top"; + position = "top"; + "modules-left" = [ + "tray" + "custom/cpu_linux" + "temperature" + "memory" + "disk" + "custom/nvidia" + ]; + "modules-center" = [ "sway/window" ]; + "modules-right" = [ + "group/blight" + "custom/colorpicker" + "idle_inhibitor" + "bluetooth" + "group/audio" + "group/networking" + "battery" + "clock" + ]; + + margin = null; + spacing = 15; + reload_style_on_change = true; + + "clock" = { + format = "{:%a %d.%m.%y | Week: %U | %T}"; + interval = 1; + tooltip-format = "\n{:%Y %B}\n{calendar}"; + calendar-weeks-pos = "right"; + today-format = "{}"; + format-calendar = "{}"; + format-calendar-weeks = "W{:%V}"; + format-calendar-weekdays = "{}"; + }; + + "disk" = { + interval = 30; + format = " {percentage_used}% {free:2} free"; + path = "/"; + }; + + "memory" = { + format = " {percentage}% {used:.1f}/{total:.1f} S: {swapUsed:.1f}/{swapTotal:.1f}"; + }; + + "custom/cpu_linux" = { + exec = "~/.config/waybar/scripts/cpu_linux.sh"; + "return-type" = "json"; + interval = 2; + format = ": {text}%"; + }; + + "custom/nvidia" = { + exec = "nvidia-smi --query-gpu=utilization.gpu,temperature.gpu --format=csv,nounits,noheader | sed 's/\\([0-9]\\+\\), \\([0-9]\\+\\)/\\1% @ \\2°C/g'"; + format = " {}"; + interval = 4; + }; + + "temperature" = { + format = " {temperatureC}°C"; + hwmon-path = "/sys/devices/platform/coretemp.0/hwmon/hwmon7/temp1_input"; + format-critical = " {temperatureC}°C"; + interval = 1; + critical-threshold = 80; + on-click = "psensor"; + }; + + "tray" = { + icon-size = 14; + spacing = 5; + }; + + "idle_inhibitor" = { + format = "{icon}"; + format-icons = { + activated = "󰾪 Presentation mode on"; + deactivated = "󰅶"; + }; + }; + + "bluetooth" = { + format-on = "󰂰"; + format-off = ""; + format-disabled = "󰂲"; + format-connected = "󰂴"; + format-connected-battery = "{device_battery_percentage}% 󰂴"; + tooltip-format = "{controller_alias}\t{controller_address}\n\n{num_connections} connected"; + tooltip-format-connected = "{controller_alias}\t{controller_address}\n\n{num_connections} connected\n\n{device_enumerate}"; + tooltip-format-enumerate-connected = "{device_alias}\t{device_address}"; + tooltip-format-enumerate-connected-battery = "{device_alias}\t{device_address}\t{device_battery_percentage}%"; + on-click = "rofi-bluetooth"; + }; + + "pulseaudio" = { + format = "{volume}% {icon}"; + format-bluetooth = "󰂰"; + format-muted = ""; + tooltip-format = "{volume}% {icon}"; + format-icons = { + headphones = ""; + bluetooth = "󰥰"; + handsfree = ""; + headset = "󱡬"; + phone = ""; + portable = ""; + car = ""; + default = [ "" ]; + }; + scroll-step = 5; + justify = "center"; + on-click = "pamixer -t"; + on-click-right = "pavucontrol"; + on-scroll-up = "pactl set-sink-volume @DEFAULT_SINK@ +5%"; + on-scroll-down = "pactl set-sink-volume @DEFAULT_SINK@ -5%"; + }; + + "pulseaudio#mic" = { + format = "{format_source}"; + format-source = ""; + format-source-muted = ""; + tooltip-format = "{volume}% {format_source} "; + on-click = "pactl set-source-mute 1 toggle"; + on-scroll-down = "pactl set-source-volume 1 -1%"; + on-scroll-up = "pactl set-source-volume 1 +1%"; + }; + + "group/audio" = { + orientation = "horizontal"; + modules = [ "pulseaudio" "pulseaudio#mic" ]; + }; + + "group/networking" = { + orientation = "horizontal"; + modules = [ "network" "network#speed" ]; + }; + + network = { + format-wifi = " {essid}"; + format-ethernet = "󰈀"; + format-disconnected = "󱐅"; + tooltip-format = "{ipaddr}"; + tooltip-format-wifi = "{essid} ({signalStrength}%)  \n{ipaddr} | {frequency} MHz{icon}"; + tooltip-format-ethernet = "{ifname} 󰈀 \n{ipaddr} | {frequency} MHz{icon} "; + tooltip-format-disconnected = "Not Connected"; + on-click = "networkmanager_dmenu"; + }; + + "network#speed" = { + format = "󰁅 {bandwidthDownBits:20} 󰁝 {bandwidthUpBits:20}"; + interval = 1; + tooltip = true; + tooltip-format = "{ipaddr}"; + tooltip-format-wifi = "{essid} ({signalStrength}%)  \n{ipaddr} | {frequency} MHz{icon} "; + tooltip-format-ethernet = "{ifname} 󰈀 \n{ipaddr} | {frequency} MHz{icon} "; + tooltip-format-disconnected = "Not Connected"; + on-click = "networkmanager_dmenu"; + }; + + "battery" = { + interval = 4; + states = { + good = 95; + warning = 30; + critical = 20; + }; + format = "{capacity}% {icon} {power:.2f}W {time}"; + format-time = "{H}h {M}min"; + tooltip = "{time}"; + format-charging = "{capacity}% Full at {full-at}%"; + format-plugged = "{capacity}% 󰠠"; + format-icons = [ + "󰪞" "󰪟" "󰪠" "󰪡" + "󰪢" "󰪣" "󰪤" "󰪥" + ]; + }; + }; + }; + }; +} diff --git a/hosts/dev-vm/default.nix b/hosts/dev-vm/default.nix new file mode 100755 index 0000000..45adb20 --- /dev/null +++ b/hosts/dev-vm/default.nix @@ -0,0 +1,37 @@ +{ config, pkgs, lib, home-manager, ... }: + +{ + imports = [ + ../../modules/sway.nix + ../../modules/dev.nix + ./sway.nix + ./hardware-configuration.nix + + # home manager integration + home-manager.nixosModules.home-manager + ./home.nix + ]; + + home-manager.useUserPackages = true; + home-manager.useGlobalPkgs = true; + + # bootloader + boot.loader.systemd-boot.enable = true; + boot.loader.efi.canTouchEfiVariables = true; + + networking.hostName = "dev-vm"; + + # time and localization + time.timeZone = "Europe/Berlin"; + + # vm guest config + virtualisation.virtualbox.guest.enable = true; + virtualisation.virtualbox.guest.clipboard = true; + + # users + users.users.alex = { + isNormalUser = true; + extraGroups = [ "wheel" ]; + shell = pkgs.fish; + }; +} diff --git a/hosts/dev-vm/hardware-configuration.nix b/hosts/dev-vm/hardware-configuration.nix new file mode 100644 index 0000000..56a393e --- /dev/null +++ b/hosts/dev-vm/hardware-configuration.nix @@ -0,0 +1,38 @@ +# 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 = [ ]; + + boot.initrd.availableKernelModules = [ "ata_piix" "ohci_pci" "ehci_pci" "sd_mod" "sr_mod" ]; + boot.initrd.kernelModules = [ ]; + boot.kernelModules = [ ]; + boot.extraModulePackages = [ ]; + + fileSystems."/" = + { device = "/dev/disk/by-uuid/3cbff268-faac-43e2-a5d4-277a44072035"; + fsType = "ext4"; + }; + + fileSystems."/boot" = + { device = "/dev/disk/by-uuid/5308-547F"; + fsType = "vfat"; + options = [ "fmask=0077" "dmask=0077" ]; + }; + + swapDevices = + [ { device = "/dev/disk/by-uuid/d1ed07ab-a38d-481d-9b9b-59a031898b46"; } + ]; + + # 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.enp0s3.useDHCP = lib.mkDefault true; + + nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux"; + virtualisation.virtualbox.guest.enable = true; +} diff --git a/hosts/dev-vm/home.nix b/hosts/dev-vm/home.nix new file mode 100755 index 0000000..b49b88b --- /dev/null +++ b/hosts/dev-vm/home.nix @@ -0,0 +1,15 @@ +{ config, pkgs, ... }: + +{ + home-manager.users.alex= { + imports = [ + ../../home-manager/common.nix + ../../home-manager/sway.nix + ../../home-manager/rofi.nix + ../../home-manager/waybar.nix + ]; + home.packages = with pkgs; [ + neovim + ]; + }; +} diff --git a/hosts/dev-vm/sway.nix b/hosts/dev-vm/sway.nix new file mode 100644 index 0000000..ba04dbd --- /dev/null +++ b/hosts/dev-vm/sway.nix @@ -0,0 +1,7 @@ +{ pkgs, ... }: + +{ + environment.systemPackages = with pkgs; [ + wayland-utils + ]; +} diff --git a/modules/desktop.nix b/modules/desktop.nix new file mode 100644 index 0000000..56c648a --- /dev/null +++ b/modules/desktop.nix @@ -0,0 +1,13 @@ +{ config, lib, pkgs, ... } +{ + environment.systemPackages = with pkgs; [ + ] + # Enable CUPS to print documents. + services.printing.enable = true; + + # sound setup + nixpkgs.config.pulseaudio.enable = true; + services.pulseaudio.enable = true; + + +} diff --git a/modules/dev.nix b/modules/dev.nix new file mode 100755 index 0000000..3f11cf8 --- /dev/null +++ b/modules/dev.nix @@ -0,0 +1,11 @@ +{ config, lib, pkgs, ... }: + +{ + environment.systemPackages = with pkgs; [ + jdk + jetbrains.pycharm-professional + mongodb-compass + ]; + + +} diff --git a/modules/display.nix b/modules/display.nix new file mode 100644 index 0000000..0e8c80e --- /dev/null +++ b/modules/display.nix @@ -0,0 +1,10 @@ +{ config, pkgs, ... } +{ + # ly display manager + services.ly.enable = true; + + # setup persmission for set in wayland + programs.seatd.enable = true; + + +} diff --git a/modules/laptop.nix b/modules/laptop.nix new file mode 100644 index 0000000..e21d43c --- /dev/null +++ b/modules/laptop.nix @@ -0,0 +1,4 @@ +{ pkgs, ... } +{ + +} diff --git a/modules/sway.nix b/modules/sway.nix new file mode 100644 index 0000000..d0d7259 --- /dev/null +++ b/modules/sway.nix @@ -0,0 +1,28 @@ +{ config, lib, pkgs, ... }: + +{ + environment.systemPackages = with pkgs; [ + xwayland + ly + sway + swaylock + swayidle + + nwg-displays + + # screenshot stuff + grim + slurp + + + wl-clipboard + mako + ]; + services.displayManager.ly.enable = true; + programs.xwayland.enable = true; + + programs.sway = { + enable = true; + wrapperFeatures.gtk = true; + }; +} diff --git a/rebuild.sh b/rebuild.sh new file mode 100755 index 0000000..d77bb95 --- /dev/null +++ b/rebuild.sh @@ -0,0 +1 @@ +sudo nixos-rebuild switch --flake .#$(hostname)