From 404b6431cea20b1f63e23b3f6225d2b2f081271c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Matej=20Jane=C5=BEi=C4=8D?= Date: Thu, 26 Mar 2026 23:23:52 +0100 Subject: [PATCH] feat: update flake and hosts for new structure --- flake.nix | 106 +++++++--------------------------- flake/devshell.nix | 17 ++++++ flake/hosts.nix | 86 +++++++++++++++++++++++++++ flake/overlays.nix | 21 +++++++ flake/packages.nix | 22 +++++++ hosts/ephvm/configuration.nix | 21 +------ hosts/fw16/configuration.nix | 50 +--------------- hosts/iso/configuration.nix | 11 ---- hosts/tower/configuration.nix | 38 +----------- 9 files changed, 173 insertions(+), 199 deletions(-) create mode 100644 flake/devshell.nix create mode 100644 flake/hosts.nix create mode 100644 flake/overlays.nix create mode 100644 flake/packages.nix diff --git a/flake.nix b/flake.nix index abbbe9a..28489bb 100644 --- a/flake.nix +++ b/flake.nix @@ -39,98 +39,34 @@ }; outputs = - inputs@{ flake-parts, nixpkgs, ... }: + inputs@{ + flake-parts, + nixpkgs, + self, + ... + }: flake-parts.lib.mkFlake { inherit inputs; } { + imports = [ + ./flake/overlays.nix + ./flake/packages.nix + ./flake/devshell.nix + ./flake/hosts.nix + ]; + systems = [ "x86_64-linux" ]; perSystem = - { system, pkgs, ... }: - let - my-lib = import ./lib { inherit (nixpkgs) lib; }; - in + { system, ... }: { - packages = - import ./packages - { - inherit my-lib; - inherit (nixpkgs) lib; - } - { - inherit pkgs; - pkgs-unstable = inputs.nixpkgs-unstable.legacyPackages.${system}; - pkgs-master = inputs.nixpkgs-master.legacyPackages.${system}; - }; - - formatter = pkgs.nixfmt-tree; - - devShells.default = pkgs.mkShell { - packages = [ - pkgs.pre-commit - pkgs.statix - pkgs.shellcheck - pkgs.shfmt - pkgs.qemu - ]; + _module.args.pkgs = import nixpkgs { + inherit system; + overlays = [ self.overlays.default ]; + config.allowUnfree = true; }; }; - flake = - let - my-lib = import ./lib { inherit (nixpkgs) lib; }; - - overlays = [ - ( - _: prev: - let - pkgs-unstable = import inputs.nixpkgs-unstable { - inherit (prev.stdenv.hostPlatform) system; - inherit (prev) config; - }; - pkgs-master = import inputs.nixpkgs-master { - inherit (prev.stdenv.hostPlatform) system; - inherit (prev) config; - }; - in - { - inherit (pkgs-master) claude-code; - # TODO:(@janezicmatej) 2026-03-09 error with stable for telegram-desktop - inherit (pkgs-unstable) telegram-desktop; - } - ) - ]; - - mkHost = my-lib.mkHost { - inherit - nixpkgs - overlays - inputs - ; - }; - in - { - lib = my-lib; - - nixosConfigurations = { - fw16 = mkHost "fw16" { - system = "x86_64-linux"; - user = "matej"; - }; - tower = mkHost "tower" { - system = "x86_64-linux"; - user = "matej"; - }; - - # nixos-rebuild build-image --image-variant install-iso --flake .#iso - iso = mkHost "iso" { - system = "x86_64-linux"; - }; - - ephvm = mkHost "ephvm" { - system = "x86_64-linux"; - user = "matej"; - }; - }; - - }; + flake = { + lib = import ./lib { inherit (nixpkgs) lib; }; + }; }; } diff --git a/flake/devshell.nix b/flake/devshell.nix new file mode 100644 index 0000000..f2f7f69 --- /dev/null +++ b/flake/devshell.nix @@ -0,0 +1,17 @@ +_: { + perSystem = + { pkgs, ... }: + { + formatter = pkgs.nixfmt-tree; + + devShells.default = pkgs.mkShell { + packages = [ + pkgs.pre-commit + pkgs.statix + pkgs.shellcheck + pkgs.shfmt + pkgs.qemu + ]; + }; + }; +} diff --git a/flake/hosts.nix b/flake/hosts.nix new file mode 100644 index 0000000..46cda93 --- /dev/null +++ b/flake/hosts.nix @@ -0,0 +1,86 @@ +{ inputs, self, ... }: + +let + inherit (inputs) nixpkgs; + my-lib = import ../lib { inherit (nixpkgs) lib; }; + + mkHost = my-lib.mkHost { + inherit nixpkgs inputs; + overlays = [ self.overlays.default ]; + }; +in +{ + flake.nixosConfigurations = { + fw16 = mkHost "fw16" { + system = "x86_64-linux"; + user = "matej"; + features = [ + "openssh" + "localisation" + "gnupg" + "shell" + "desktop" + "sway" + "greeter" + "printing" + "networkmanager" + "docker" + "tailscale" + "nix-ld" + "yubikey" + "calibre" + "steam" + "neovim" + "dev" + "claude" + ]; + }; + + tower = mkHost "tower" { + system = "x86_64-linux"; + user = "matej"; + features = [ + "openssh" + "localisation" + "gnupg" + "shell" + "desktop" + "sway" + "greeter" + "printing" + "networkmanager" + "docker" + "tailscale" + "yubikey" + "calibre" + "initrd-ssh" + "neovim" + "dev" + "claude" + ]; + }; + + # nixos-rebuild build-image --image-variant install-iso --flake .#iso + iso = mkHost "iso" { + system = "x86_64-linux"; + features = [ + "openssh" + ]; + }; + + ephvm = mkHost "ephvm" { + system = "x86_64-linux"; + user = "matej"; + features = [ + "openssh" + "localisation" + "gnupg" + "shell" + "vm-guest" + "vm-9p-automount" + "docker" + "neovim" + ]; + }; + }; +} diff --git a/flake/overlays.nix b/flake/overlays.nix new file mode 100644 index 0000000..e1f8698 --- /dev/null +++ b/flake/overlays.nix @@ -0,0 +1,21 @@ +{ inputs, ... }: + +{ + flake.overlays.default = + _: prev: + let + pkgs-unstable = import inputs.nixpkgs-unstable { + inherit (prev.stdenv.hostPlatform) system; + inherit (prev) config; + }; + pkgs-master = import inputs.nixpkgs-master { + inherit (prev.stdenv.hostPlatform) system; + inherit (prev) config; + }; + in + { + inherit (pkgs-master) claude-code; + # TODO:(@janezicmatej) 2026-03-09 error with stable for telegram-desktop + inherit (pkgs-unstable) telegram-desktop; + }; +} diff --git a/flake/packages.nix b/flake/packages.nix new file mode 100644 index 0000000..d5c6408 --- /dev/null +++ b/flake/packages.nix @@ -0,0 +1,22 @@ +{ inputs, ... }: + +let + my-lib = import ../lib { inherit (inputs.nixpkgs) lib; }; +in +{ + perSystem = + { pkgs, system, ... }: + { + packages = + import ../packages + { + inherit my-lib; + inherit (inputs.nixpkgs) lib; + } + { + inherit pkgs; + pkgs-unstable = inputs.nixpkgs-unstable.legacyPackages.${system}; + pkgs-master = inputs.nixpkgs-master.legacyPackages.${system}; + }; + }; +} diff --git a/hosts/ephvm/configuration.nix b/hosts/ephvm/configuration.nix index fc4d6d5..775d276 100644 --- a/hosts/ephvm/configuration.nix +++ b/hosts/ephvm/configuration.nix @@ -2,14 +2,9 @@ pkgs, lib, inputs, - config, ... }: { - networking.hostName = "ephvm"; - - profiles.base.enable = true; - # no hardware firmware needed in a VM hardware.enableRedistributableFirmware = lib.mkForce false; hardware.wirelessRegulatoryDatabase = lib.mkForce false; @@ -33,27 +28,15 @@ ); }; - vm-guest = { - enable = true; - headless = true; - }; + vm-guest.headless = true; - vm-9p-automount = { - enable = true; - user = "matej"; - }; + vm-9p-automount.user = "matej"; localisation = { timeZone = "UTC"; defaultLocale = "en_US.UTF-8"; }; - virtualisation.docker = { - enable = true; - logDriver = "json-file"; - }; - - # TODO:(@janezicmatej) move neovim dotfiles wiring to a cleaner place home-manager.users.matej = { neovim.dotfiles = inputs.nvim; }; diff --git a/hosts/fw16/configuration.nix b/hosts/fw16/configuration.nix index 16f66e0..5a698e8 100644 --- a/hosts/fw16/configuration.nix +++ b/hosts/fw16/configuration.nix @@ -1,40 +1,21 @@ { - config, lib, pkgs, inputs, options, - userKeys, ... }: -let - packages = inputs.self.outputs.packages.${pkgs.stdenv.hostPlatform.system}; -in - { imports = [ inputs.nixos-hardware.nixosModules.framework-16-amd-ai-300-series - inputs.stylix.nixosModules.stylix ]; - profiles.desktop.enable = true; - localisation = { timeZone = "Europe/Ljubljana"; defaultLocale = "en_US.UTF-8"; }; - stylix = { - enable = true; - polarity = "dark"; - image = "${inputs.assets}/wallpaper.png"; - base16Scheme = "${pkgs.base16-schemes}/share/themes/gruvbox-material-dark-medium.yaml"; - }; - - # neovim manages its own theme - home-manager.users.matej.stylix.targets.neovim.enable = false; - boot.loader.systemd-boot.enable = true; boot.loader.efi.canTouchEfiVariables = true; @@ -53,26 +34,11 @@ in HibernateDelaySec=30min ''; - # WARN:(@janezicmatej) nix-ld for running pip-installed binaries outside nix, probably want to drop this - programs.nix-ld.enable = true; programs.nix-ld.libraries = options.programs.nix-ld.libraries.default; - security.pki.certificateFiles = [ packages.ca-matheo-si ]; services.gnome.gnome-keyring.enable = true; - services.teamviewer.enable = true; - programs.thunderbird.enable = true; - programs._1password.enable = true; - programs._1password-gui.enable = true; - programs.firefox.enable = true; - programs.steam = { - enable = true; - remotePlay.openFirewall = true; - dedicatedServer.openFirewall = true; - localNetworkGameTransfers.openFirewall = true; - }; - services.hardware.bolt.enable = true; hardware.keyboard.zsa.enable = true; hardware.ledger.enable = true; @@ -85,21 +51,7 @@ in SUBSYSTEM=="usb", DRIVERS=="usb", ATTRS{idVendor}=="32ac", ATTRS{idProduct}=="0014", ATTR{power/wakeup}="disabled" ''; - programs.nm-applet.enable = true; - - networking = { - hostName = "fw16"; - networkmanager.enable = true; - firewall.enable = false; - nameservers = [ - "1.1.1.1" - "8.8.8.8" - ]; - }; - - xdg.mime.defaultApplications = { - "application/pdf" = "org.pwmt.zathura.desktop"; - }; + networking.firewall.enable = false; system.stateVersion = "24.11"; } diff --git a/hosts/iso/configuration.nix b/hosts/iso/configuration.nix index 8ce29b5..ff94e9c 100644 --- a/hosts/iso/configuration.nix +++ b/hosts/iso/configuration.nix @@ -1,23 +1,12 @@ { - pkgs, - lib, - inputs, userKeys, ... }: { - openssh.enable = true; - image.modules.iso-installer = { isoImage.squashfsCompression = "zstd -Xcompression-level 6"; }; - fileSystems."/" = lib.mkDefault { - device = "/dev/disk/by-label/nixos"; - fsType = "ext4"; - }; - boot.loader.grub.device = lib.mkDefault "/dev/sda"; - networking.firewall.allowedTCPPorts = [ 22 ]; users = { diff --git a/hosts/tower/configuration.nix b/hosts/tower/configuration.nix index 3b37f10..411f772 100644 --- a/hosts/tower/configuration.nix +++ b/hosts/tower/configuration.nix @@ -1,42 +1,25 @@ { - config, lib, - pkgs, inputs, - options, userKeys, ... }: { imports = [ - inputs.stylix.nixosModules.stylix inputs.lanzaboote.nixosModules.lanzaboote ]; - profiles.desktop.enable = true; - - initrd-ssh = { - enable = true; - networkModule = "r8169"; - authorizedKeys = userKeys.sshAuthorizedKeys; - }; - localisation = { timeZone = "Europe/Ljubljana"; defaultLocale = "en_US.UTF-8"; }; - stylix = { - enable = true; - polarity = "dark"; - image = "${inputs.assets}/wallpaper.png"; - base16Scheme = "${pkgs.base16-schemes}/share/themes/gruvbox-material-dark-medium.yaml"; + initrd-ssh = { + networkModule = "r8169"; + authorizedKeys = userKeys.sshAuthorizedKeys; }; - # neovim manages its own theme - home-manager.users.matej.stylix.targets.neovim.enable = false; - # lanzaboote secure boot boot.kernelParams = [ "btusb.reset=1" ]; boot.loader.efi.canTouchEfiVariables = true; @@ -46,13 +29,8 @@ pkiBundle = "/var/lib/sbctl"; }; - boot.binfmt.emulatedSystems = [ "aarch64-linux" ]; - services.udisks2.enable = true; - programs._1password.enable = true; - programs._1password-gui.enable = true; - # higher sample rate for audio equipment services.pipewire.extraConfig.pipewire.adjust-sample-rate = { "context.properties" = { @@ -61,15 +39,5 @@ }; }; - environment.systemPackages = with pkgs; [ - easyeffects - ]; - - networking.hostName = "tower"; - - xdg.mime.defaultApplications = { - "application/pdf" = "org.pwmt.zathura.desktop"; - }; - system.stateVersion = "25.05"; }