From 4d8f3f1921dd063790151a9a4674218b3e944b1b Mon Sep 17 00:00:00 2001 From: fwastring Date: Wed, 3 Sep 2025 09:35:51 +0200 Subject: [PATCH] updated --- .xinitrc.jobb | 5 +- config/dev.nix | 4 + config/home.nix | 8 +- config/network.nix | 1 + config/programs-minimal.nix | 3 + config/programs.nix | 6 +- config/sway.nix | 30 +++ flake.lock | 241 +++++++++++++++++++++-- install.sh | 2 +- maskiner/jobb/configuration.nix | 144 ++++++++++++-- maskiner/jobb/configuration.nix.bak | 31 +++ maskiner/jobb/hardware-configuration.nix | 11 +- shared/dwm.nix | 2 +- shared/firefox.nix | 12 -- shared/kitty.nix | 8 +- shared/ssh.nix | 6 + 16 files changed, 451 insertions(+), 63 deletions(-) create mode 100644 config/sway.nix create mode 100644 maskiner/jobb/configuration.nix.bak diff --git a/.xinitrc.jobb b/.xinitrc.jobb index 814895b..15dc89f 100755 --- a/.xinitrc.jobb +++ b/.xinitrc.jobb @@ -12,13 +12,12 @@ fi xrdb -merge ~/.Xresources setxkbmap -option caps:swapescape -feh --bg-scale ~/nix/wallpapers/inverted.png +feh --bg-scale ~/nix/wallpapers/blue.png dwmblocks & dunst & xbanish & -xrandr --output "DP-1-1" --auto --same-as "eDP-1" +# xrandr --output eDP-1 --mode 1920x1080 --pos 3840x1080 --rotate normal --output DP-1 --off --output HDMI-1 --off --output DP-2 --off --output HDMI-2 --off --output DP-1-1 --off --output DP-1-2 --primary --mode 3840x2160 --pos 0x0 --rotate normal --output DP-1-3 --off exec dwm - diff --git a/config/dev.nix b/config/dev.nix index a3aa878..05ad4ab 100644 --- a/config/dev.nix +++ b/config/dev.nix @@ -12,10 +12,14 @@ let }); in { + nix.settings.trusted-users = [ "root" "fw" ]; environment.systemPackages = with pkgs; [ timewarrior + devenv + + # Containers kubectl docker-slim diff --git a/config/home.nix b/config/home.nix index 352c19d..c6e9134 100644 --- a/config/home.nix +++ b/config/home.nix @@ -38,13 +38,7 @@ programs.man.generateCaches = false; xsession.enable = true; - xsession.windowManager.command = - if myhostname == "laptop" then - "/home/fw/nix/.xinitrc.laptop" - else if myhostname == "jobb" then - "/home/fw/nix/.xinitrc.jobb" - else - "/home/fw/nix/.xinitrc"; + xsession.windowManager.command = "xrandr --output eDP-1 --mode 1920x1080 --pos 0x1080 --rotate normal --output DP-1 --off --output HDMI-1 --primary --mode 3840x2160 --pos 1920x0 --rotate normal --output DP-2 --off --output HDMI-2 --off"; home.username = "fw"; home.homeDirectory = "/home/fw"; diff --git a/config/network.nix b/config/network.nix index 1ac44d7..3acf980 100644 --- a/config/network.nix +++ b/config/network.nix @@ -12,6 +12,7 @@ services.netbird = { enable = true; ui.enable = true; + package = pkgs.unstable.netbird; }; environment.systemPackages = with pkgs; [ diff --git a/config/programs-minimal.nix b/config/programs-minimal.nix index 0657d1e..49bf850 100644 --- a/config/programs-minimal.nix +++ b/config/programs-minimal.nix @@ -15,6 +15,9 @@ slack speedcrunch remmina + thunderbird + drawio + freecad-wayland # Capturing byzanz diff --git a/config/programs.nix b/config/programs.nix index 647f480..9dbc888 100644 --- a/config/programs.nix +++ b/config/programs.nix @@ -26,18 +26,18 @@ unstable.signal-desktop thunderbird libreoffice - obsidian discord slack speedcrunch remmina vial via + drawio + freecad-wayland + ghostty # Browsers librewolf - unstable.qutebrowser - jan chawan # Capturing diff --git a/config/sway.nix b/config/sway.nix new file mode 100644 index 0000000..74ad681 --- /dev/null +++ b/config/sway.nix @@ -0,0 +1,30 @@ +{ config, pkgs, lib, ... }: +{ + environment.systemPackages = with pkgs; [ + grim # screenshot functionality + slurp # screenshot functionality + wl-clipboard # wl-copy and wl-paste for copy/paste from stdin / stdout + mako # notification system developed by swaywm maintainer + waypipe + ]; + + # Enable the gnome-keyring secrets vault. + # Will be exposed through DBus to programs willing to store secrets. + services.gnome.gnome-keyring.enable = true; + + # enable Sway window manager + programs.sway = { + enable = true; + wrapperFeatures.gtk = true; + }; + + services.greetd = { + enable = true; + settings = { + default_session = { + command = "${pkgs.greetd.tuigreet}/bin/tuigreet --time --cmd sway"; + user = "greeter"; + }; + }; + }; +} diff --git a/flake.lock b/flake.lock index 71f3684..5883181 100644 --- a/flake.lock +++ b/flake.lock @@ -1,5 +1,79 @@ { "nodes": { + "flake-compat": { + "flake": false, + "locked": { + "lastModified": 1747046372, + "narHash": "sha256-CIVLLkVgvHYbgI2UpXvIIBJ12HWgX+fjA8Xf8PUmqCY=", + "owner": "edolstra", + "repo": "flake-compat", + "rev": "9100a0f413b0c601e0533d1d94ffd501ce2e7885", + "type": "github" + }, + "original": { + "owner": "edolstra", + "repo": "flake-compat", + "type": "github" + } + }, + "flake-compat_2": { + "flake": false, + "locked": { + "lastModified": 1747046372, + "narHash": "sha256-CIVLLkVgvHYbgI2UpXvIIBJ12HWgX+fjA8Xf8PUmqCY=", + "owner": "edolstra", + "repo": "flake-compat", + "rev": "9100a0f413b0c601e0533d1d94ffd501ce2e7885", + "type": "github" + }, + "original": { + "owner": "edolstra", + "repo": "flake-compat", + "type": "github" + } + }, + "flake-parts": { + "inputs": { + "nixpkgs-lib": [ + "neovim-nightly-overlay", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1754487366, + "narHash": "sha256-pHYj8gUBapuUzKV/kN/tR3Zvqc7o6gdFB9XKXIp1SQ8=", + "owner": "hercules-ci", + "repo": "flake-parts", + "rev": "af66ad14b28a127c5c0f3bbb298218fc63528a18", + "type": "github" + }, + "original": { + "owner": "hercules-ci", + "repo": "flake-parts", + "type": "github" + } + }, + "flake-parts_2": { + "inputs": { + "nixpkgs-lib": [ + "neovim-nightly-overlay", + "hercules-ci-effects", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1751413152, + "narHash": "sha256-Tyw1RjYEsp5scoigs1384gIg6e0GoBVjms4aXFfRssQ=", + "owner": "hercules-ci", + "repo": "flake-parts", + "rev": "77826244401ea9de6e3bac47c2db46005e1f30b5", + "type": "github" + }, + "original": { + "id": "flake-parts", + "type": "indirect" + } + }, "fw-pkgs": { "locked": { "lastModified": 1730710113, @@ -16,6 +90,73 @@ "type": "github" } }, + "git-hooks": { + "inputs": { + "flake-compat": "flake-compat_2", + "gitignore": "gitignore", + "nixpkgs": [ + "neovim-nightly-overlay", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1754416808, + "narHash": "sha256-c6yg0EQ9xVESx6HGDOCMcyRSjaTpNJP10ef+6fRcofA=", + "owner": "cachix", + "repo": "git-hooks.nix", + "rev": "9c52372878df6911f9afc1e2a1391f55e4dfc864", + "type": "github" + }, + "original": { + "owner": "cachix", + "repo": "git-hooks.nix", + "type": "github" + } + }, + "gitignore": { + "inputs": { + "nixpkgs": [ + "neovim-nightly-overlay", + "git-hooks", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1709087332, + "narHash": "sha256-HG2cCnktfHsKV0s4XW83gU3F57gaTljL9KNSuG6bnQs=", + "owner": "hercules-ci", + "repo": "gitignore.nix", + "rev": "637db329424fd7e46cf4185293b9cc8c88c95394", + "type": "github" + }, + "original": { + "owner": "hercules-ci", + "repo": "gitignore.nix", + "type": "github" + } + }, + "hercules-ci-effects": { + "inputs": { + "flake-parts": "flake-parts_2", + "nixpkgs": [ + "neovim-nightly-overlay", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1752595130, + "narHash": "sha256-CNBgr4OZSuklGtNOa9CnTNo9+Xceqn/EDAC1Tc43fH8=", + "owner": "hercules-ci", + "repo": "hercules-ci-effects", + "rev": "5f2e09654b2e70ba643e41609d9f9b6640f22113", + "type": "github" + }, + "original": { + "owner": "hercules-ci", + "repo": "hercules-ci-effects", + "type": "github" + } + }, "home-manager": { "inputs": { "nixpkgs": [ @@ -23,11 +164,11 @@ ] }, "locked": { - "lastModified": 1748226808, - "narHash": "sha256-GaBRgxjWO1bAQa8P2+FDxG4ANBVhjnSjBms096qQdxo=", + "lastModified": 1753592768, + "narHash": "sha256-oV695RvbAE4+R9pcsT9shmp6zE/+IZe6evHWX63f2Qg=", "owner": "nix-community", "repo": "home-manager", - "rev": "83665c39fa688bd6a1f7c43cf7997a70f6a109f9", + "rev": "fc3add429f21450359369af74c2375cb34a2d204", "type": "github" }, "original": { @@ -37,29 +178,69 @@ "type": "github" } }, + "neovim-nightly-overlay": { + "inputs": { + "flake-compat": "flake-compat", + "flake-parts": "flake-parts", + "git-hooks": "git-hooks", + "hercules-ci-effects": "hercules-ci-effects", + "neovim-src": "neovim-src", + "nixpkgs": "nixpkgs", + "treefmt-nix": "treefmt-nix" + }, + "locked": { + "lastModified": 1755166568, + "narHash": "sha256-nDvZQVXBumUvxJpSCFvYvwroxev0VVLo3o1O1lOsRL0=", + "owner": "nix-community", + "repo": "neovim-nightly-overlay", + "rev": "5839a314cfaccc12235b7f6adf280074a332916b", + "type": "github" + }, + "original": { + "owner": "nix-community", + "repo": "neovim-nightly-overlay", + "type": "github" + } + }, + "neovim-src": { + "flake": false, + "locked": { + "lastModified": 1755127085, + "narHash": "sha256-fax8+y7ggHjps+HLa/Yz2cA7yACyu4CoaNsvuFUI2HQ=", + "owner": "neovim", + "repo": "neovim", + "rev": "9843573a61f42b7f9ea5ded0f5221320ac1925c5", + "type": "github" + }, + "original": { + "owner": "neovim", + "repo": "neovim", + "type": "github" + } + }, "nixpkgs": { "locked": { - "lastModified": 1748162331, - "narHash": "sha256-rqc2RKYTxP3tbjA+PB3VMRQNnjesrT0pEofXQTrMsS8=", + "lastModified": 1755082269, + "narHash": "sha256-Ix7ALeaxv9tW4uBKWeJnaKpYZtZiX4H4Q/MhEmj4XYA=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "7c43f080a7f28b2774f3b3f43234ca11661bf334", + "rev": "d74de548348c46cf25cb1fcc4b74f38103a4590d", "type": "github" }, "original": { "owner": "NixOS", - "ref": "nixos-25.05", + "ref": "nixpkgs-unstable", "repo": "nixpkgs", "type": "github" } }, "nixpkgs-unstable": { "locked": { - "lastModified": 1748370509, - "narHash": "sha256-QlL8slIgc16W5UaI3w7xHQEP+Qmv/6vSNTpoZrrSlbk=", + "lastModified": 1755027561, + "narHash": "sha256-IVft239Bc8p8Dtvf7UAACMG5P3ZV+3/aO28gXpGtMXI=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "4faa5f5321320e49a78ae7848582f684d64783e9", + "rev": "005433b926e16227259a1843015b5b2b7f7d1fc3", "type": "github" }, "original": { @@ -69,13 +250,51 @@ "type": "github" } }, + "nixpkgs_2": { + "locked": { + "lastModified": 1755078291, + "narHash": "sha256-Hu/gTDoi4uy6TAKISPHQusSMy8U6xUbLSDjKBYdhDIY=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "3385ca0cd7e14c1a1eb80401fe011705ff012323", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-25.05", + "repo": "nixpkgs", + "type": "github" + } + }, "root": { "inputs": { "fw-pkgs": "fw-pkgs", "home-manager": "home-manager", - "nixpkgs": "nixpkgs", + "neovim-nightly-overlay": "neovim-nightly-overlay", + "nixpkgs": "nixpkgs_2", "nixpkgs-unstable": "nixpkgs-unstable" } + }, + "treefmt-nix": { + "inputs": { + "nixpkgs": [ + "neovim-nightly-overlay", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1754847726, + "narHash": "sha256-2vX8QjO5lRsDbNYvN9hVHXLU6oMl+V/PsmIiJREG4rE=", + "owner": "numtide", + "repo": "treefmt-nix", + "rev": "7d81f6fb2e19bf84f1c65135d1060d829fae2408", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "treefmt-nix", + "type": "github" + } } }, "root": "root", diff --git a/install.sh b/install.sh index d4d001f..91ccaac 100755 --- a/install.sh +++ b/install.sh @@ -4,7 +4,7 @@ #sudo nixos-rebuild switch --flake ".#$2" -sudo nix-channel --add https://github.com/nix-community/home-manager/archive/release-23.11.tar.gz home-manager +sudo nix-channel --add https://github.com/nix-community/home-manager/archive/release-25.05.tar.gz home-manager sudo nix-channel --update nix-shell '' -A install diff --git a/maskiner/jobb/configuration.nix b/maskiner/jobb/configuration.nix index 01744cb..25329e5 100644 --- a/maskiner/jobb/configuration.nix +++ b/maskiner/jobb/configuration.nix @@ -1,5 +1,7 @@ -# This is your system's configuration file. -# Use this to configure your system environment (it replaces /etc/nixos/configuration.nix) +# 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’). + { inputs, lib, @@ -8,24 +10,140 @@ myhostname, ... }: { - # You can import other NixOS modules here - imports = [ - ./hardware-configuration.nix - ../../config/base.nix + imports = + [ # Include the results of the hardware scan. + ./hardware-configuration.nix ../../config/users.nix + ../../config/network.nix + ../../config/programs.nix + ../../config/system.nix + ../../config/dev.nix + ../../config/lsp.nix + ../../config/sway.nix + ]; + + # Bootloader. + boot.loader.systemd-boot.enable = true; + boot.loader.efi.canTouchEfiVariables = true; + +fonts.packages = with pkgs; [ + nerd-fonts.comic-shanns-mono + nerd-fonts.fira-code ]; - environment.systemPackages = with pkgs; [ - kubectl - azure-cli - ]; + hardware = { + bluetooth = { + enable = true; + powerOnBoot = true; + settings = { + General = { + Disable = "Headset"; + }; + }; + }; + }; + nix.registry = (lib.mapAttrs (_: flake: { inherit flake; })) ( + (lib.filterAttrs (_: lib.isType "flake")) inputs + ); + nix.nixPath = [ "/etc/nix/path" ]; + users.defaultUserShell = pkgs.bash; + documentation.man.generateCaches = false; + programs.fish.enable = true; + programs.bash = { + interactiveShellInit = '' + if [[ $(${pkgs.procps}/bin/ps --no-header --pid=$PPID --format=comm) != "fish" && -z ''${BASH_EXECUTION_STRING} ]] + then + shopt -q login_shell && LOGIN_OPTION='--login' || LOGIN_OPTION="" + exec ${pkgs.fish}/bin/fish $LOGIN_OPTION + fi + ''; + }; + environment.etc = lib.mapAttrs' (name: value: { + name = "nix/path/${name}"; + value.source = value.flake; + }) config.nix.registry; - networking.hostName = myhostname; + nix.settings = { + experimental-features = "nix-command flakes"; + auto-optimise-store = true; + }; - services.xserver.dpi = 140; - system.stateVersion = "23.11"; + networking.hostName = myhostname; # Define your hostname. + + # Enable networking + networking.networkmanager.enable = true; + + # Set your time zone. + time.timeZone = "Europe/Stockholm"; + + # Select internationalisation properties. + i18n.defaultLocale = "en_US.UTF-8"; + + i18n.extraLocaleSettings = { + LC_ADDRESS = "sv_SE.UTF-8"; + LC_IDENTIFICATION = "sv_SE.UTF-8"; + LC_MEASUREMENT = "sv_SE.UTF-8"; + LC_MONETARY = "sv_SE.UTF-8"; + LC_NAME = "sv_SE.UTF-8"; + LC_NUMERIC = "sv_SE.UTF-8"; + LC_PAPER = "sv_SE.UTF-8"; + LC_TELEPHONE = "sv_SE.UTF-8"; + LC_TIME = "sv_SE.UTF-8"; + }; + + # Enable the X11 windowing system. + + +services = { + tailscale.enable = true; + picom.enable = true; + openssh = { + enable = true; + }; + blueman = { + enable = true; + }; + }; + + # Configure console keymap + console.keyMap = "sv-latin1"; + + # 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; + }; + + virtualisation.docker = { + enable = true; + }; + + + # Define a user account. Don't forget to set a password with ‘passwd’. + users.users.fw = { + isNormalUser = true; + description = "Fredrik Wastring"; + extraGroups = [ "networkmanager" "wheel" "docker" ]; + }; + + # Install firefox. + programs.firefox.enable = true; + + # Allow unfree packages + nixpkgs.config.allowUnfree = true; + + services.xserver.dpi = 180; + + system.stateVersion = "25.05"; # Did you read the comment? } diff --git a/maskiner/jobb/configuration.nix.bak b/maskiner/jobb/configuration.nix.bak new file mode 100644 index 0000000..01744cb --- /dev/null +++ b/maskiner/jobb/configuration.nix.bak @@ -0,0 +1,31 @@ +# This is your system's configuration file. +# Use this to configure your system environment (it replaces /etc/nixos/configuration.nix) +{ + inputs, + lib, + config, + pkgs, + myhostname, + ... +}: { + # You can import other NixOS modules here + imports = [ + ./hardware-configuration.nix + ../../config/base.nix + ../../config/users.nix + ]; + + environment.systemPackages = with pkgs; [ + kubectl + azure-cli + ]; + + + + + networking.hostName = myhostname; + + services.xserver.dpi = 140; + + system.stateVersion = "23.11"; +} diff --git a/maskiner/jobb/hardware-configuration.nix b/maskiner/jobb/hardware-configuration.nix index c2ea262..951f13c 100644 --- a/maskiner/jobb/hardware-configuration.nix +++ b/maskiner/jobb/hardware-configuration.nix @@ -8,23 +8,24 @@ [ (modulesPath + "/installer/scan/not-detected.nix") ]; - boot.initrd.availableKernelModules = [ "xhci_pci" "nvme" "usb_storage" "usbhid" "sd_mod" "rtsx_pci_sdmmc" ]; + boot.initrd.availableKernelModules = [ "xhci_pci" "nvme" "usbhid" "usb_storage" "sd_mod" "rtsx_pci_sdmmc" ]; boot.initrd.kernelModules = [ ]; boot.kernelModules = [ "kvm-intel" ]; boot.extraModulePackages = [ ]; fileSystems."/" = - { device = "/dev/disk/by-uuid/231d66c5-7d08-4317-8c3c-b0a160af83e7"; + { device = "/dev/disk/by-uuid/40bb9f8c-1a35-476a-8d78-18763ec97171"; fsType = "ext4"; }; fileSystems."/boot" = - { device = "/dev/disk/by-uuid/2646-A8BA"; + { device = "/dev/disk/by-uuid/FAC4-0F98"; fsType = "vfat"; + options = [ "fmask=0077" "dmask=0077" ]; }; swapDevices = - [ { device = "/dev/disk/by-uuid/cc350407-ca49-4831-9780-b7757b6540a6"; } + [ { device = "/dev/disk/by-uuid/d14d1b31-04fb-4ec8-a70f-438939898c3f"; } ]; # Enables DHCP on each ethernet and wireless interface. In case of scripted networking @@ -33,7 +34,7 @@ # with explicit per-interface declarations with `networking.interfaces..useDHCP`. networking.useDHCP = lib.mkDefault true; # networking.interfaces.enp0s31f6.useDHCP = lib.mkDefault true; - # networking.interfaces.enp59s0u1u2.useDHCP = lib.mkDefault true; + # networking.interfaces.enp59s0u1u4.useDHCP = lib.mkDefault true; # networking.interfaces.wlp2s0.useDHCP = lib.mkDefault true; nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux"; diff --git a/shared/dwm.nix b/shared/dwm.nix index a12f8b4..9e0cc8c 100644 --- a/shared/dwm.nix +++ b/shared/dwm.nix @@ -8,7 +8,7 @@ let dwm = pkgs.dwm.overrideAttrs (old: { src = builtins.fetchGit { url = "https://github.com/FredzyW/dwm-conf.git"; - rev = "fc45c6741b02db90ecd94d17ec6a2ed32a94da02"; + rev = "916a68db2dc57f8e0c87c6fb13a2eb3edd0d6144"; }; nativeBuildInputs = with pkgs; [ xorg.libX11.dev diff --git a/shared/firefox.nix b/shared/firefox.nix index 58a5518..2a71556 100644 --- a/shared/firefox.nix +++ b/shared/firefox.nix @@ -4,18 +4,6 @@ enable = true; profiles.default = { isDefault = true; - userChrome = '' - @import "${ - builtins.fetchGit { - url = "https://github.com/rockofox/firefox-minima"; - ref = "main"; - rev = "dc40a861b24b378982c265a7769e3228ffccd45a"; # <-- Change this - } - }/userChrome.css"; - ''; - settings = { - "toolkit.legacyUserProfileCustomizations.stylesheets" = true; - }; }; }; } diff --git a/shared/kitty.nix b/shared/kitty.nix index adde5d0..49cdaad 100644 --- a/shared/kitty.nix +++ b/shared/kitty.nix @@ -8,15 +8,9 @@ programs.kitty = { enable = true; font = - if myhostname == "laptop" then { name = "ComicShannsMono Nerd Font"; - size = 18; - } - else - { - name = "ComicShannsMono Nerd Font"; - size = 12; + size = 22; }; shellIntegration = { mode = "no-cursor"; diff --git a/shared/ssh.nix b/shared/ssh.nix index 6439224..c128a13 100644 --- a/shared/ssh.nix +++ b/shared/ssh.nix @@ -9,6 +9,12 @@ user = "fr7658wa-s"; identityFile = "/home/fw/.ssh/id_rsa"; }; + "git.wastring.com" = { + hostname = "git.wastring.com"; + port = 80; + user = "git"; + identityFile = "/home/fw/.ssh/id_ed25519"; + }; "dm2" = { hostname = "192.168.0.190"; port = 22;