From ac3dac322d5f05bd6d358d06afc6aee57f93db63 Mon Sep 17 00:00:00 2001 From: chris Date: Wed, 25 Mar 2026 06:45:43 +0000 Subject: [PATCH] . --- clan.nix | 72 ++++- flake.nix | 295 +----------------- homes/x86_64-linux/chris@mandos/default.nix | 36 --- homes/x86_64-linux/chris@manwe/default.nix | 59 ---- homes/x86_64-linux/chris@orome/default.nix | 49 --- homes/x86_64-linux/chris@tulkas/default.nix | 36 --- lib/default.nix | 96 ++++++ lib/options/default.nix | 15 +- lib/strings/default.nix | 10 +- machines/aule/configuration.nix | 1 + machines/default.nix | 9 + machines/mandos/configuration.nix | 4 +- machines/mandos/default.nix | 3 - machines/mandos/hardware.nix | 4 +- machines/manwe/configuration.nix | 2 + machines/manwe/default.nix | 3 - machines/manwe/hardware.nix | 4 +- machines/melkor/configuration.nix | 1 + machines/orome/configuration.nix | 2 + machines/orome/default.nix | 3 - machines/orome/hardware.nix | 4 +- machines/tulkas/configuration.nix | 2 + machines/tulkas/default.nix | 3 - machines/tulkas/hardware.nix | 4 +- machines/ulmo/configuration.nix | 2 + machines/ulmo/default.nix | 3 - machines/ulmo/hardware.nix | 4 +- machines/varda/configuration.nix | 1 + machines/yavanna/configuration.nix | 1 + modules/home/application/default.nix | 17 + modules/home/application/studio/default.nix | 2 +- modules/home/default.nix | 12 + modules/home/desktop/default.nix | 5 + modules/home/development/default.nix | 7 + modules/home/editor/default.nix | 7 + modules/home/game/default.nix | 5 + modules/home/shell/default.nix | 5 + modules/home/shell/toolset/default.nix | 16 + modules/home/terminal/default.nix | 6 + modules/nixos/application/default.nix | 5 + modules/nixos/default.nix | 14 + modules/nixos/desktop/default.nix | 7 + modules/nixos/editor/default.nix | 6 + modules/nixos/hardware/default.nix | 7 + modules/nixos/hardware/gpu/default.nix | 6 + .../nixos/services/authentication/default.nix | 7 + .../authentication/zitadel/default.nix | 4 +- modules/nixos/services/backup/default.nix | 5 + .../nixos/services/communication/default.nix | 5 + modules/nixos/services/default.nix | 15 + .../nixos/services/development/default.nix | 5 + modules/nixos/services/games/default.nix | 7 + modules/nixos/services/media/default.nix | 9 + .../nixos/services/media/jellyfin/default.nix | 1 - .../nixos/services/media/mydia/default.nix | 1 - .../nixos/services/media/servarr/default.nix | 3 +- modules/nixos/services/networking/default.nix | 7 + .../nixos/services/observability/default.nix | 9 + .../nixos/services/persistance/default.nix | 5 + modules/nixos/services/security/default.nix | 5 + .../services/security/vaultwarden/default.nix | 2 +- .../nixos/services/virtualisation/default.nix | 5 + modules/nixos/system/default.nix | 6 + modules/nixos/system/security/default.nix | 8 +- .../nixos/system/security/sops/default.nix | 4 +- packages/default.nix | 24 ++ packages/studio/default.nix | 119 +------ packages/studio/package.nix | 100 ++++++ packages/vaultwarden/default.nix | 32 +- packages/vaultwarden/package.nix | 28 ++ scratchpad | 1 + shells/default/default.nix | 36 +-- .../x86_64-install-iso/minimal/default.nix | 121 ------- users/chris/mandos.nix | 38 +++ users/chris/manwe.nix | 61 ++++ users/chris/orome.nix | 51 +++ users/chris/tulkas.nix | 38 +++ users/default.nix | 78 +++++ 78 files changed, 893 insertions(+), 802 deletions(-) delete mode 100644 homes/x86_64-linux/chris@mandos/default.nix delete mode 100644 homes/x86_64-linux/chris@manwe/default.nix delete mode 100644 homes/x86_64-linux/chris@orome/default.nix delete mode 100644 homes/x86_64-linux/chris@tulkas/default.nix create mode 100644 lib/default.nix create mode 100644 machines/default.nix delete mode 100644 machines/mandos/default.nix delete mode 100644 machines/manwe/default.nix delete mode 100644 machines/orome/default.nix delete mode 100644 machines/tulkas/default.nix delete mode 100644 machines/ulmo/default.nix create mode 100644 modules/home/application/default.nix create mode 100644 modules/home/desktop/default.nix create mode 100644 modules/home/development/default.nix create mode 100644 modules/home/editor/default.nix create mode 100644 modules/home/game/default.nix create mode 100644 modules/home/shell/toolset/default.nix create mode 100644 modules/home/terminal/default.nix create mode 100644 modules/nixos/application/default.nix create mode 100644 modules/nixos/default.nix create mode 100644 modules/nixos/editor/default.nix create mode 100644 modules/nixos/hardware/default.nix create mode 100644 modules/nixos/hardware/gpu/default.nix create mode 100644 modules/nixos/services/authentication/default.nix create mode 100644 modules/nixos/services/backup/default.nix create mode 100644 modules/nixos/services/communication/default.nix create mode 100644 modules/nixos/services/default.nix create mode 100644 modules/nixos/services/development/default.nix create mode 100644 modules/nixos/services/games/default.nix create mode 100644 modules/nixos/services/networking/default.nix create mode 100644 modules/nixos/services/observability/default.nix create mode 100644 modules/nixos/services/persistance/default.nix create mode 100644 modules/nixos/services/security/default.nix create mode 100644 modules/nixos/services/virtualisation/default.nix create mode 100644 modules/nixos/system/default.nix create mode 100644 packages/default.nix create mode 100644 packages/studio/package.nix create mode 100644 packages/vaultwarden/package.nix create mode 100644 scratchpad delete mode 100644 systems/x86_64-install-iso/minimal/default.nix create mode 100644 users/chris/mandos.nix create mode 100644 users/chris/manwe.nix create mode 100644 users/chris/orome.nix create mode 100644 users/chris/tulkas.nix create mode 100644 users/default.nix diff --git a/clan.nix b/clan.nix index 18af8a9..2524ad2 100644 --- a/clan.nix +++ b/clan.nix @@ -1,6 +1,6 @@ { - sharedSpecialArgs, - mkMachineModuleList, + baseNixosModules, + lib, }: { meta = { name = "arda"; @@ -67,35 +67,73 @@ }; }; + inventory.instances = { + user-chris = { + module.name = "users"; + module.input = "clan-core"; + + roles.default.machines.mandos.settings = {}; + roles.default.machines.manwe.settings = {}; + roles.default.machines.orome.settings = {}; + roles.default.machines.tulkas.settings = {}; + + roles.default.settings = { + user = "chris"; + groups = [ "wheel" ]; + prompt = true; + share = true; + }; + }; + }; + machines = { mandos = { - _module.args = sharedSpecialArgs; - imports = mkMachineModuleList "mandos"; - nixpkgs.hostPlatform = "x86_64-linux"; + imports = baseNixosModules ++ [ + { + networking.hostName = lib.mkDefault "mandos"; + } + ./machines/mandos/configuration.nix + ./users/chris/mandos.nix + ]; }; manwe = { - _module.args = sharedSpecialArgs; - imports = mkMachineModuleList "manwe"; - nixpkgs.hostPlatform = "x86_64-linux"; + imports = baseNixosModules ++ [ + { + networking.hostName = lib.mkDefault "manwe"; + } + ./machines/manwe/configuration.nix + ./users/chris/manwe.nix + ]; }; orome = { - _module.args = sharedSpecialArgs; - imports = mkMachineModuleList "orome"; - nixpkgs.hostPlatform = "x86_64-linux"; + imports = baseNixosModules ++ [ + { + networking.hostName = lib.mkDefault "orome"; + } + ./machines/orome/configuration.nix + ./users/chris/orome.nix + ]; }; tulkas = { - _module.args = sharedSpecialArgs; - imports = mkMachineModuleList "tulkas"; - nixpkgs.hostPlatform = "x86_64-linux"; + imports = baseNixosModules ++ [ + { + networking.hostName = lib.mkDefault "tulkas"; + } + ./machines/tulkas/configuration.nix + ./users/chris/tulkas.nix + ]; }; ulmo = { - _module.args = sharedSpecialArgs; - imports = mkMachineModuleList "ulmo"; - nixpkgs.hostPlatform = "x86_64-linux"; + imports = baseNixosModules ++ [ + { + networking.hostName = lib.mkDefault "ulmo"; + } + ./machines/ulmo/configuration.nix + ]; }; }; } diff --git a/flake.nix b/flake.nix index f53e964..1225179 100644 --- a/flake.nix +++ b/flake.nix @@ -98,292 +98,23 @@ }; }; - outputs = inputs @ { - flake-parts, - home-manager, - nixpkgs, - ... - }: let - inherit (nixpkgs) lib; - - namespace = "sneeuwvlok"; - - supportedSystems = [ - "x86_64-linux" - "aarch64-linux" - "x86_64-darwin" - "aarch64-darwin" - ]; - - channelConfig = { - allowUnfree = true; - permittedInsecurePackages = [ - # Due to *arr stack - "dotnet-sdk-6.0.428" - "aspnetcore-runtime-6.0.36" - - # I think this is because of zen - "qtwebengine-5.15.19" - - # For Nheko, the matrix client - "olm-3.2.16" - ]; - }; - - packageDefs = { - studio = { - path = ./packages/studio/default.nix; - extra = { - erosanixLib = inputs.erosanix.lib; - }; - systems = ["x86_64-linux"]; - }; - vaultwarden = { - path = ./packages/vaultwarden/default.nix; - extra = {}; - systems = supportedSystems; - }; - }; - - mkPackageOverlay = name: def: final: prev: - lib.optionalAttrs (lib.elem final.stdenv.hostPlatform.system def.systems) { - ${name} = final.callPackage def.path def.extra; - }; - - packageOverlays = { - "package/studio" = mkPackageOverlay "studio" packageDefs.studio; - "package/vaultwarden" = mkPackageOverlay "vaultwarden" packageDefs.vaultwarden; - }; - - systemOverlays = with inputs; [ - fenix.overlays.default - nix-minecraft.overlay - flux.overlays.default - ]; - - mkPkgs = system: - import nixpkgs { - inherit system; - overlays = systemOverlays; - config = channelConfig; - }; - - collectModules = root: let - recurse = prefix: dir: let - entries = builtins.readDir dir; - selfModule = - if builtins.pathExists (dir + "/default.nix") - then { - "${if prefix == "" then "__root" else prefix}" = dir; - } - else {}; - in - lib.foldl' (acc: name: let - kind = entries.${name}; - path = dir + "/${name}"; - rel = if prefix == "" then name else "${prefix}/${name}"; - children = - if kind == "directory" - then recurse rel path - else {}; - current = - if kind == "directory" && builtins.pathExists (path + "/default.nix") - then {"${rel}" = path;} - else {}; - in - acc // children // current) selfModule (builtins.attrNames entries); - in - recurse "" root; - - nixosModules = collectModules ./modules/nixos; - homeModules = collectModules ./modules/home; - - homeEntries = { - "chris@mandos" = { - machine = "mandos"; - user = "chris"; - path = ./homes/x86_64-linux + "/chris@mandos"; - }; - "chris@manwe" = { - machine = "manwe"; - user = "chris"; - path = ./homes/x86_64-linux + "/chris@manwe"; - }; - "chris@orome" = { - machine = "orome"; - user = "chris"; - path = ./homes/x86_64-linux + "/chris@orome"; - }; - "chris@tulkas" = { - machine = "tulkas"; - user = "chris"; - path = ./homes/x86_64-linux + "/chris@tulkas"; - }; - }; - - sneeuwvlokLib = - (import ./lib/options {inherit lib;}) - // (import ./lib/strings {inherit lib;}); - - machineConfigPaths = builtins.listToAttrs (map (name: lib.nameValuePair name (./machines + "/${name}/configuration.nix")) [ - "aule" - "mandos" - "manwe" - "melkor" - "orome" - "tulkas" - "ulmo" - "varda" - "yavanna" - ]); - - machineHomeModules = lib.mapAttrs' (_: spec: lib.nameValuePair spec.machine [{ - users.users.${spec.user} = { - isNormalUser = lib.mkDefault true; - }; - home-manager.users.${spec.user} = import spec.path; - }]) homeEntries; - - sharedSpecialArgs = { - inherit namespace; - erosanixLib = inputs.erosanix.lib; - repoRoot = ./.; - inherit sneeuwvlokLib; - terranixLib = inputs.terranix.lib; - system = "x86_64-linux"; - }; - - homeSharedModules = - [ - inputs.stylix.homeModules.stylix - inputs.plasma-manager.homeModules.plasma-manager - inputs.zen-browser.homeModules.default - ] - ++ builtins.attrValues homeModules; - - baseNixosModules = - [ - { _module.args = sharedSpecialArgs; } - inputs.grub2-themes.nixosModules.default - inputs.home-manager.nixosModules.home-manager - inputs.himmelblau.nixosModules.himmelblau - inputs.jovian.nixosModules.default - inputs.mydia.nixosModules.default - inputs.nix-minecraft.nixosModules.minecraft-servers - inputs.nvf.nixosModules.default - inputs.sops-nix.nixosModules.sops - { - nixpkgs = { - config = channelConfig; - overlays = systemOverlays; - }; - - home-manager = { - useGlobalPkgs = true; - useUserPackages = true; - extraSpecialArgs = sharedSpecialArgs; - sharedModules = homeSharedModules; - }; - } - ] - ++ builtins.attrValues nixosModules; - - mkClanMachineModuleList = name: - baseNixosModules - ++ (machineHomeModules.${name} or []) - ++ [ - { - networking.hostName = lib.mkDefault name; - } - ]; - - mkMachineModuleList = name: - mkClanMachineModuleList name - ++ [ - machineConfigPaths.${name} - ]; - - clanConfig = import ./clan.nix { - inherit sharedSpecialArgs; - mkMachineModuleList = mkClanMachineModuleList; - }; - - activeMachineNames = builtins.attrNames clanConfig.machines; - - nixosConfigurations = - lib.genAttrs activeMachineNames (name: - lib.nixosSystem { - system = "x86_64-linux"; - specialArgs = sharedSpecialArgs; - modules = mkMachineModuleList name; - }); - - homeConfigurations = - lib.mapAttrs (_: spec: - home-manager.lib.homeManagerConfiguration { - pkgs = mkPkgs "x86_64-linux"; - extraSpecialArgs = - sharedSpecialArgs - // { - osConfig = nixosConfigurations.${spec.machine}.config; - }; - modules = - homeSharedModules - ++ [ - { - home.username = spec.user; - home.homeDirectory = "/home/${spec.user}"; - } - spec.path - ]; - }) - homeEntries; - in + outputs = inputs@{flake-parts, ...}: flake-parts.lib.mkFlake {inherit inputs;} { - systems = supportedSystems; + systems = [ + "x86_64-linux" + "aarch64-linux" + "x86_64-darwin" + "aarch64-darwin" + ]; imports = [ inputs.clan-core.flakeModules.default + inputs.home-manager.flakeModules.home-manager + ./lib/default.nix + ./machines/default.nix + ./packages/default.nix + ./shells/default/default.nix + ./users/default.nix ]; - - clan = clanConfig; - - perSystem = { - system, - ... - }: let - pkgs = mkPkgs system; - in { - _module.args.pkgs = pkgs; - - packages = lib.filterAttrs (_: value: value != null) { - studio = - if lib.elem system packageDefs.studio.systems - then pkgs.callPackage packageDefs.studio.path packageDefs.studio.extra - else null; - vaultwarden = - if lib.elem system packageDefs.vaultwarden.systems - then pkgs.callPackage packageDefs.vaultwarden.path packageDefs.vaultwarden.extra - else null; - }; - - devShells.default = import ./shells/default/default.nix { - inherit inputs pkgs; - inherit (pkgs) mkShell stdenv; - }; - }; - - flake = { - inherit homeConfigurations; - nixosConfigurations = lib.mkForce nixosConfigurations; - - lib = sneeuwvlokLib; - - overlays = - packageOverlays - // { - default = lib.composeManyExtensions (builtins.attrValues packageOverlays); - }; - }; }; } diff --git a/homes/x86_64-linux/chris@mandos/default.nix b/homes/x86_64-linux/chris@mandos/default.nix deleted file mode 100644 index ba87e73..0000000 --- a/homes/x86_64-linux/chris@mandos/default.nix +++ /dev/null @@ -1,36 +0,0 @@ -{osConfig, ...}: { - home.stateVersion = osConfig.system.stateVersion; - - programs.git = { - settings.user = { - name = "Chris Kruining"; - email = "chris@kruining.eu"; - }; - }; - - sneeuwvlok = { - defaults = { - shell = "zsh"; - terminal = "ghostty"; - browser = "zen"; - editor = "zed"; - }; - - shell = { - corePkgs.enable = true; - }; - - themes = { - enable = true; - theme = "everforest"; - polarity = "dark"; - }; - - application = { - bitwarden.enable = true; - teamspeak.enable = true; - steam.enable = true; - zen.enable = true; - }; - }; -} diff --git a/homes/x86_64-linux/chris@manwe/default.nix b/homes/x86_64-linux/chris@manwe/default.nix deleted file mode 100644 index 0aced9b..0000000 --- a/homes/x86_64-linux/chris@manwe/default.nix +++ /dev/null @@ -1,59 +0,0 @@ -{osConfig, ...}: { - home.stateVersion = osConfig.system.stateVersion; - - programs.git = { - settings.user = { - name = "Chris Kruining"; - email = "chris@kruining.eu"; - }; - }; - - sneeuwvlok = { - defaults = { - shell = "zsh"; - terminal = "ghostty"; - browser = "zen"; - editor = "zed"; - }; - - shell = { - corePkgs.enable = true; - }; - - themes = { - enable = true; - theme = "everforest"; - polarity = "dark"; - }; - - development = { - rust.enable = true; - javascript.enable = true; - dotnet.enable = true; - }; - - application = { - bitwarden.enable = true; - discord.enable = true; - ladybird.enable = true; - matrix.enable = true; - obs.enable = true; - onlyoffice.enable = true; - signal.enable = true; - steam.enable = true; - studio.enable = true; - teamspeak.enable = true; - thunderbird.enable = true; - zen.enable = true; - }; - - shell.zsh.enable = true; - terminal.ghostty.enable = true; - - editor = { - zed.enable = true; - nvim.enable = true; - nano.enable = true; - }; - }; -} diff --git a/homes/x86_64-linux/chris@orome/default.nix b/homes/x86_64-linux/chris@orome/default.nix deleted file mode 100644 index 7a1dc43..0000000 --- a/homes/x86_64-linux/chris@orome/default.nix +++ /dev/null @@ -1,49 +0,0 @@ -{osConfig, ...}: { - home.stateVersion = osConfig.system.stateVersion; - - programs.git = { - settings.user = { - name = "Chris Kruining"; - email = "chris@kruining.eu"; - }; - }; - - sneeuwvlok = { - defaults = { - shell = "zsh"; - terminal = "ghostty"; - browser = "zen"; - editor = "zed"; - }; - - shell = { - corePkgs.enable = true; - }; - - themes = { - enable = true; - theme = "everforest"; - polarity = "dark"; - }; - - development = { - javascript.enable = true; - dotnet.enable = true; - }; - - application = { - bitwarden.enable = true; - onlyoffice.enable = true; - signal.enable = true; - zen.enable = true; - }; - - shell.zsh.enable = true; - terminal.ghostty.enable = true; - - editor = { - zed.enable = true; - nano.enable = true; - }; - }; -} diff --git a/homes/x86_64-linux/chris@tulkas/default.nix b/homes/x86_64-linux/chris@tulkas/default.nix deleted file mode 100644 index ba87e73..0000000 --- a/homes/x86_64-linux/chris@tulkas/default.nix +++ /dev/null @@ -1,36 +0,0 @@ -{osConfig, ...}: { - home.stateVersion = osConfig.system.stateVersion; - - programs.git = { - settings.user = { - name = "Chris Kruining"; - email = "chris@kruining.eu"; - }; - }; - - sneeuwvlok = { - defaults = { - shell = "zsh"; - terminal = "ghostty"; - browser = "zen"; - editor = "zed"; - }; - - shell = { - corePkgs.enable = true; - }; - - themes = { - enable = true; - theme = "everforest"; - polarity = "dark"; - }; - - application = { - bitwarden.enable = true; - teamspeak.enable = true; - steam.enable = true; - zen.enable = true; - }; - }; -} diff --git a/lib/default.nix b/lib/default.nix new file mode 100644 index 0000000..c89e6cf --- /dev/null +++ b/lib/default.nix @@ -0,0 +1,96 @@ +{ + config, + inputs, + lib, + ... +}: let + inherit (lib) mkOption types; + namespace = "sneeuwvlok"; + + channelConfig = { + allowUnfree = true; + permittedInsecurePackages = [ + # Due to *arr stack + "dotnet-sdk-6.0.428" + "aspnetcore-runtime-6.0.36" + + # I think this is because of zen + "qtwebengine-5.15.19" + + # For Nheko, the matrix client + "olm-3.2.16" + ]; + }; + + systemOverlays = with inputs; [ + fenix.overlays.default + nix-minecraft.overlay + flux.overlays.default + ]; + + mkPkgs = system: + import inputs.nixpkgs { + inherit system; + overlays = systemOverlays; + config = channelConfig; + }; + + sharedContext = { + inherit inputs namespace; + erosanixLib = inputs.erosanix.lib; + repoRoot = ../.; + sneeuwvlokLib = config.localLib; + terranixLib = inputs.terranix.lib; + }; + + baseNixosModules = + [ + inputs.grub2-themes.nixosModules.default + inputs.home-manager.nixosModules.home-manager + inputs.himmelblau.nixosModules.himmelblau + inputs.jovian.nixosModules.default + inputs.mydia.nixosModules.default + inputs.nix-minecraft.nixosModules.minecraft-servers + inputs.nvf.nixosModules.default + inputs.sops-nix.nixosModules.sops + { + nixpkgs = { + config = channelConfig; + overlays = systemOverlays; + }; + + home-manager = { + useGlobalPkgs = true; + useUserPackages = true; + extraSpecialArgs = sharedContext; + sharedModules = config.localUsers.homeSharedModules; + }; + } + ] + ++ [ ../modules/nixos ]; +in { + imports = [ + ./options + ./strings + ]; + + options.localLib = mkOption { + type = types.lazyAttrsOf types.raw; + default = {}; + }; + + config = { + _module.args = { + inherit + baseNixosModules + channelConfig + mkPkgs + sharedContext + systemOverlays + ; + sneeuwvlokLib = config.localLib; + }; + + flake.lib = config.localLib; + }; +} diff --git a/lib/options/default.nix b/lib/options/default.nix index 72e8621..579b3de 100644 --- a/lib/options/default.nix +++ b/lib/options/default.nix @@ -1,11 +1,8 @@ -{ lib, ...}: -let - inherit (builtins) isString typeOf; - inherit (lib) mkOption types throwIfNot concatStringsSep splitStringBy toLower map; -in -{ - options = { - mkUrlOptions = +{lib, ...}: let + inherit (lib) mkOption types; +in { + localLib.options = { + mkUrlOptions = defaults: { host = mkOption { @@ -35,4 +32,4 @@ in } // (defaults.protocol or {}); }; }; -} \ No newline at end of file +} diff --git a/lib/strings/default.nix b/lib/strings/default.nix index 0c15699..b9c7361 100644 --- a/lib/strings/default.nix +++ b/lib/strings/default.nix @@ -1,10 +1,8 @@ -{ lib, ...}: -let +{lib, ...}: let inherit (builtins) isString typeOf match toString head; inherit (lib) throwIfNot concatStringsSep splitStringBy toLower map concatMapAttrsStringSep; -in -{ - strings = { +in { + localLib.strings = { #======================================================================================== # Converts a string to snake case # @@ -36,4 +34,4 @@ in in "${_protocol}${host}${_port}${_path}${_query}${_hash}"; }; -} \ No newline at end of file +} diff --git a/machines/aule/configuration.nix b/machines/aule/configuration.nix index 4b2c5c4..e75bc1c 100644 --- a/machines/aule/configuration.nix +++ b/machines/aule/configuration.nix @@ -1,2 +1,3 @@ { ... }: { + nixpkgs.hostPlatform = "x86_64-linux"; } diff --git a/machines/default.nix b/machines/default.nix new file mode 100644 index 0000000..37086fa --- /dev/null +++ b/machines/default.nix @@ -0,0 +1,9 @@ +{baseNixosModules, lib, sharedContext, ...}: { + clan = + (import ../clan.nix { + inherit baseNixosModules lib; + }) + // { + specialArgs = sharedContext; + }; +} diff --git a/machines/mandos/configuration.nix b/machines/mandos/configuration.nix index e7dda36..cbeefc6 100644 --- a/machines/mandos/configuration.nix +++ b/machines/mandos/configuration.nix @@ -5,6 +5,8 @@ ./hardware.nix ]; + nixpkgs.hostPlatform = "x86_64-linux"; + sneeuwvlok = { hardware.has = { gpu.nvidia = true; @@ -28,4 +30,4 @@ }; system.stateVersion = "23.11"; -} \ No newline at end of file +} diff --git a/machines/mandos/default.nix b/machines/mandos/default.nix deleted file mode 100644 index 9e99ca6..0000000 --- a/machines/mandos/default.nix +++ /dev/null @@ -1,3 +0,0 @@ -{ ... }: { - imports = [ ./configuration.nix ]; -} diff --git a/machines/mandos/hardware.nix b/machines/mandos/hardware.nix index 60759bd..ebed139 100644 --- a/machines/mandos/hardware.nix +++ b/machines/mandos/hardware.nix @@ -1,4 +1,4 @@ -{ config, lib, pkgs, modulesPath, system, ... }: +{ config, lib, pkgs, modulesPath, ... }: let inherit (lib.modules) mkDefault; in @@ -13,6 +13,6 @@ in extraModulePackages = [ ]; }; - nixpkgs.hostPlatform = mkDefault system; + nixpkgs.hostPlatform = mkDefault pkgs.stdenv.hostPlatform.system; hardware.cpu.intel.updateMicrocode = mkDefault config.hardware.enableRedistributableFirmware; } diff --git a/machines/manwe/configuration.nix b/machines/manwe/configuration.nix index 1ba0566..ec052be 100644 --- a/machines/manwe/configuration.nix +++ b/machines/manwe/configuration.nix @@ -4,6 +4,8 @@ ./hardware.nix ]; + nixpkgs.hostPlatform = "x86_64-linux"; + system.activationScripts.remove-gtkrc.text = "rm -f /home/chris/.gtkrc-2.0"; services.logrotate.checkConfig = false; diff --git a/machines/manwe/default.nix b/machines/manwe/default.nix deleted file mode 100644 index 9e99ca6..0000000 --- a/machines/manwe/default.nix +++ /dev/null @@ -1,3 +0,0 @@ -{ ... }: { - imports = [ ./configuration.nix ]; -} diff --git a/machines/manwe/hardware.nix b/machines/manwe/hardware.nix index 33ae3b5..3686637 100644 --- a/machines/manwe/hardware.nix +++ b/machines/manwe/hardware.nix @@ -1,4 +1,4 @@ -{ config, lib, pkgs, modulesPath, system, ... }: +{ config, lib, pkgs, modulesPath, ... }: let inherit (lib.modules) mkDefault; in @@ -13,6 +13,6 @@ in extraModulePackages = [ ]; }; - nixpkgs.hostPlatform = mkDefault system; + nixpkgs.hostPlatform = mkDefault pkgs.stdenv.hostPlatform.system; hardware.cpu.amd.updateMicrocode = mkDefault config.hardware.enableRedistributableFirmware; } diff --git a/machines/melkor/configuration.nix b/machines/melkor/configuration.nix index 4b2c5c4..e75bc1c 100644 --- a/machines/melkor/configuration.nix +++ b/machines/melkor/configuration.nix @@ -1,2 +1,3 @@ { ... }: { + nixpkgs.hostPlatform = "x86_64-linux"; } diff --git a/machines/orome/configuration.nix b/machines/orome/configuration.nix index 95c8fd4..1762545 100644 --- a/machines/orome/configuration.nix +++ b/machines/orome/configuration.nix @@ -4,6 +4,8 @@ ./hardware.nix ]; + nixpkgs.hostPlatform = "x86_64-linux"; + environment.systemPackages = with pkgs; [ azure-cli github-copilot-cli diff --git a/machines/orome/default.nix b/machines/orome/default.nix deleted file mode 100644 index 9e99ca6..0000000 --- a/machines/orome/default.nix +++ /dev/null @@ -1,3 +0,0 @@ -{ ... }: { - imports = [ ./configuration.nix ]; -} diff --git a/machines/orome/hardware.nix b/machines/orome/hardware.nix index ee52810..2390ffd 100644 --- a/machines/orome/hardware.nix +++ b/machines/orome/hardware.nix @@ -1,4 +1,4 @@ -{ config, lib, pkgs, modulesPath, system, ... }: +{ config, lib, pkgs, modulesPath, ... }: let inherit (lib.modules) mkDefault; in @@ -13,6 +13,6 @@ in extraModulePackages = [ ]; }; - nixpkgs.hostPlatform = mkDefault system; + nixpkgs.hostPlatform = mkDefault pkgs.stdenv.hostPlatform.system; hardware.cpu.intel.updateMicrocode = mkDefault config.hardware.enableRedistributableFirmware; } diff --git a/machines/tulkas/configuration.nix b/machines/tulkas/configuration.nix index afba730..ff3750b 100644 --- a/machines/tulkas/configuration.nix +++ b/machines/tulkas/configuration.nix @@ -5,6 +5,8 @@ ./hardware.nix ]; + nixpkgs.hostPlatform = "x86_64-linux"; + sneeuwvlok = { hardware.has = { gpu.amd = true; diff --git a/machines/tulkas/default.nix b/machines/tulkas/default.nix deleted file mode 100644 index 9e99ca6..0000000 --- a/machines/tulkas/default.nix +++ /dev/null @@ -1,3 +0,0 @@ -{ ... }: { - imports = [ ./configuration.nix ]; -} diff --git a/machines/tulkas/hardware.nix b/machines/tulkas/hardware.nix index 950d7cc..cf287de 100644 --- a/machines/tulkas/hardware.nix +++ b/machines/tulkas/hardware.nix @@ -1,4 +1,4 @@ -{ config, lib, pkgs, modulesPath, system, ... }: +{ config, lib, pkgs, modulesPath, ... }: let inherit (lib.modules) mkDefault; in @@ -13,6 +13,6 @@ in extraModulePackages = [ ]; }; - nixpkgs.hostPlatform = mkDefault system; + nixpkgs.hostPlatform = mkDefault pkgs.stdenv.hostPlatform.system; hardware.cpu.intel.updateMicrocode = mkDefault config.hardware.enableRedistributableFirmware; } diff --git a/machines/ulmo/configuration.nix b/machines/ulmo/configuration.nix index cacc4ba..b79d25e 100644 --- a/machines/ulmo/configuration.nix +++ b/machines/ulmo/configuration.nix @@ -4,6 +4,8 @@ ./hardware.nix ]; + nixpkgs.hostPlatform = "x86_64-linux"; + networking = { interfaces.enp2s0 = { ipv6.addresses = [ diff --git a/machines/ulmo/default.nix b/machines/ulmo/default.nix deleted file mode 100644 index 9e99ca6..0000000 --- a/machines/ulmo/default.nix +++ /dev/null @@ -1,3 +0,0 @@ -{ ... }: { - imports = [ ./configuration.nix ]; -} diff --git a/machines/ulmo/hardware.nix b/machines/ulmo/hardware.nix index 4479a12..1c05d11 100644 --- a/machines/ulmo/hardware.nix +++ b/machines/ulmo/hardware.nix @@ -1,4 +1,4 @@ -{ config, lib, pkgs, modulesPath, system, ... }: +{ config, lib, pkgs, modulesPath, ... }: let inherit (lib.modules) mkDefault; in @@ -13,6 +13,6 @@ in extraModulePackages = [ ]; }; - nixpkgs.hostPlatform = mkDefault system; + nixpkgs.hostPlatform = mkDefault pkgs.stdenv.hostPlatform.system; hardware.cpu.intel.updateMicrocode = mkDefault config.hardware.enableRedistributableFirmware; } diff --git a/machines/varda/configuration.nix b/machines/varda/configuration.nix index 4b2c5c4..e75bc1c 100644 --- a/machines/varda/configuration.nix +++ b/machines/varda/configuration.nix @@ -1,2 +1,3 @@ { ... }: { + nixpkgs.hostPlatform = "x86_64-linux"; } diff --git a/machines/yavanna/configuration.nix b/machines/yavanna/configuration.nix index 4b2c5c4..e75bc1c 100644 --- a/machines/yavanna/configuration.nix +++ b/machines/yavanna/configuration.nix @@ -1,2 +1,3 @@ { ... }: { + nixpkgs.hostPlatform = "x86_64-linux"; } diff --git a/modules/home/application/default.nix b/modules/home/application/default.nix new file mode 100644 index 0000000..a8eb524 --- /dev/null +++ b/modules/home/application/default.nix @@ -0,0 +1,17 @@ +{ + imports = [ + ./bitwarden + ./chrome + ./discord + ./ladybird + ./matrix + ./obs + ./onlyoffice + ./signal + ./steam + ./studio + ./teamspeak + ./thunderbird + ./zen + ]; +} diff --git a/modules/home/application/studio/default.nix b/modules/home/application/studio/default.nix index f235031..bd4e64e 100644 --- a/modules/home/application/studio/default.nix +++ b/modules/home/application/studio/default.nix @@ -3,7 +3,7 @@ let inherit (lib) mkIf mkEnableOption; cfg = config.${namespace}.application.studio; - studioPackage = pkgs.callPackage (repoRoot + "/packages/studio/default.nix") { + studioPackage = pkgs.callPackage (repoRoot + "/packages/studio/package.nix") { inherit erosanixLib; }; in diff --git a/modules/home/default.nix b/modules/home/default.nix index 6dc81b5..1c9623e 100644 --- a/modules/home/default.nix +++ b/modules/home/default.nix @@ -5,6 +5,18 @@ let cfg = config.${namespace}.defaults; in { + imports = [ + ./application + ./desktop + ./development + ./editor + ./game + ./home-manager + ./shell + ./terminal + ./themes + ]; + options.${namespace}.defaults = { editor = mkOption { type = enum [ "nano" "nvim" "zed" ]; diff --git a/modules/home/desktop/default.nix b/modules/home/desktop/default.nix new file mode 100644 index 0000000..3498999 --- /dev/null +++ b/modules/home/desktop/default.nix @@ -0,0 +1,5 @@ +{ + imports = [ + ./plasma + ]; +} diff --git a/modules/home/development/default.nix b/modules/home/development/default.nix new file mode 100644 index 0000000..d3e528a --- /dev/null +++ b/modules/home/development/default.nix @@ -0,0 +1,7 @@ +{ + imports = [ + ./dotnet + ./javascript + ./rust + ]; +} diff --git a/modules/home/editor/default.nix b/modules/home/editor/default.nix new file mode 100644 index 0000000..b0cd9f4 --- /dev/null +++ b/modules/home/editor/default.nix @@ -0,0 +1,7 @@ +{ + imports = [ + ./nano + ./nvim + ./zed + ]; +} diff --git a/modules/home/game/default.nix b/modules/home/game/default.nix new file mode 100644 index 0000000..639ea68 --- /dev/null +++ b/modules/home/game/default.nix @@ -0,0 +1,5 @@ +{ + imports = [ + ./minecraft + ]; +} diff --git a/modules/home/shell/default.nix b/modules/home/shell/default.nix index 9968e54..636156a 100644 --- a/modules/home/shell/default.nix +++ b/modules/home/shell/default.nix @@ -5,6 +5,11 @@ let cfg = config.${namespace}.shell; in { + imports = [ + ./toolset + ./zsh + ]; + options.${namespace}.shell = { corePkgs.enable = mkEnableOption "core shell packages"; }; diff --git a/modules/home/shell/toolset/default.nix b/modules/home/shell/toolset/default.nix new file mode 100644 index 0000000..edc8c03 --- /dev/null +++ b/modules/home/shell/toolset/default.nix @@ -0,0 +1,16 @@ +{ + imports = [ + ./bat + ./btop + ./eza + ./fzf + ./git + ./gnugpg + ./just + ./starship + ./tmux + ./yazi + ./zellij + ./zoxide + ]; +} diff --git a/modules/home/terminal/default.nix b/modules/home/terminal/default.nix new file mode 100644 index 0000000..97d44fa --- /dev/null +++ b/modules/home/terminal/default.nix @@ -0,0 +1,6 @@ +{ + imports = [ + ./alacritty + ./ghostty + ]; +} diff --git a/modules/nixos/application/default.nix b/modules/nixos/application/default.nix new file mode 100644 index 0000000..cd39af6 --- /dev/null +++ b/modules/nixos/application/default.nix @@ -0,0 +1,5 @@ +{ + imports = [ + ./steam + ]; +} diff --git a/modules/nixos/default.nix b/modules/nixos/default.nix new file mode 100644 index 0000000..1a2c686 --- /dev/null +++ b/modules/nixos/default.nix @@ -0,0 +1,14 @@ +{ + imports = [ + ./application + ./boot + ./desktop + ./editor + ./hardware + ./home-manager + ./nix + ./services + ./shells + ./system + ]; +} diff --git a/modules/nixos/desktop/default.nix b/modules/nixos/desktop/default.nix index 89dfb85..03d36e6 100644 --- a/modules/nixos/desktop/default.nix +++ b/modules/nixos/desktop/default.nix @@ -9,6 +9,13 @@ cfg = config.${namespace}.desktop; in { + imports = [ + ./cosmic + ./gamescope + ./gnome + ./plasma + ]; + options.${namespace}.desktop = { use = mkOption { type = nullOr (enum ["plasma" "gamescope" "gnome" "cosmic"]); diff --git a/modules/nixos/editor/default.nix b/modules/nixos/editor/default.nix new file mode 100644 index 0000000..1bfac7a --- /dev/null +++ b/modules/nixos/editor/default.nix @@ -0,0 +1,6 @@ +{ + imports = [ + ./nano + ./nvim + ]; +} diff --git a/modules/nixos/hardware/default.nix b/modules/nixos/hardware/default.nix new file mode 100644 index 0000000..48dac93 --- /dev/null +++ b/modules/nixos/hardware/default.nix @@ -0,0 +1,7 @@ +{ + imports = [ + ./audio + ./bluetooth + ./gpu + ]; +} diff --git a/modules/nixos/hardware/gpu/default.nix b/modules/nixos/hardware/gpu/default.nix new file mode 100644 index 0000000..7274f8a --- /dev/null +++ b/modules/nixos/hardware/gpu/default.nix @@ -0,0 +1,6 @@ +{ + imports = [ + ./amd + ./nvidia + ]; +} diff --git a/modules/nixos/services/authentication/default.nix b/modules/nixos/services/authentication/default.nix new file mode 100644 index 0000000..b3af1d2 --- /dev/null +++ b/modules/nixos/services/authentication/default.nix @@ -0,0 +1,7 @@ +{ + imports = [ + ./authelia + ./himmelblau + ./zitadel + ]; +} diff --git a/modules/nixos/services/authentication/zitadel/default.nix b/modules/nixos/services/authentication/zitadel/default.nix index 24250cb..ff95e79 100644 --- a/modules/nixos/services/authentication/zitadel/default.nix +++ b/modules/nixos/services/authentication/zitadel/default.nix @@ -1,4 +1,4 @@ -{ config, lib, pkgs, namespace, system, terranixLib, sneeuwvlokLib, ... }: +{ config, lib, pkgs, namespace, terranixLib, sneeuwvlokLib, ... }: let inherit (lib) mkIf mkEnableOption mkOption types toUpper toSentenceCase nameValuePair mapAttrs mapAttrs' concatMapAttrs concatMapStringsSep filterAttrsRecursive listToAttrs imap0 head drop length literalExpression attrNames; inherit (sneeuwvlokLib.strings) toSnakeCase; @@ -340,7 +340,7 @@ in # this is a nix package, the generated json file to be exact terraformConfiguration = terranixLib.terranixConfiguration { - inherit system; + system = pkgs.stdenv.hostPlatform.system; modules = [ ({ config, lib, ... }: { diff --git a/modules/nixos/services/backup/default.nix b/modules/nixos/services/backup/default.nix new file mode 100644 index 0000000..be807e9 --- /dev/null +++ b/modules/nixos/services/backup/default.nix @@ -0,0 +1,5 @@ +{ + imports = [ + ./borg + ]; +} diff --git a/modules/nixos/services/communication/default.nix b/modules/nixos/services/communication/default.nix new file mode 100644 index 0000000..351ce1c --- /dev/null +++ b/modules/nixos/services/communication/default.nix @@ -0,0 +1,5 @@ +{ + imports = [ + ./matrix + ]; +} diff --git a/modules/nixos/services/default.nix b/modules/nixos/services/default.nix new file mode 100644 index 0000000..50a6e7b --- /dev/null +++ b/modules/nixos/services/default.nix @@ -0,0 +1,15 @@ +{ + imports = [ + ./authentication + ./backup + ./communication + ./development + ./games + ./media + ./networking + ./observability + ./persistance + ./security + ./virtualisation + ]; +} diff --git a/modules/nixos/services/development/default.nix b/modules/nixos/services/development/default.nix new file mode 100644 index 0000000..c7f3bff --- /dev/null +++ b/modules/nixos/services/development/default.nix @@ -0,0 +1,5 @@ +{ + imports = [ + ./forgejo + ]; +} diff --git a/modules/nixos/services/games/default.nix b/modules/nixos/services/games/default.nix new file mode 100644 index 0000000..32191bd --- /dev/null +++ b/modules/nixos/services/games/default.nix @@ -0,0 +1,7 @@ +{ + imports = [ + ./minecraft + ./palworld + ./openrct.nix + ]; +} diff --git a/modules/nixos/services/media/default.nix b/modules/nixos/services/media/default.nix index c10a08e..7a0d102 100644 --- a/modules/nixos/services/media/default.nix +++ b/modules/nixos/services/media/default.nix @@ -10,6 +10,15 @@ cfg = config.${namespace}.services.media; in { + imports = [ + ./glance + ./jellyfin + ./mydia + ./nextcloud + ./nfs + ./servarr + ]; + options.${namespace}.services.media = { enable = mkEnableOption "Enable media services"; diff --git a/modules/nixos/services/media/jellyfin/default.nix b/modules/nixos/services/media/jellyfin/default.nix index de19896..e129cc4 100644 --- a/modules/nixos/services/media/jellyfin/default.nix +++ b/modules/nixos/services/media/jellyfin/default.nix @@ -4,7 +4,6 @@ lib, namespace, inputs, - system, ... }: let inherit (builtins) toString; diff --git a/modules/nixos/services/media/mydia/default.nix b/modules/nixos/services/media/mydia/default.nix index e850fe4..3f2008a 100644 --- a/modules/nixos/services/media/mydia/default.nix +++ b/modules/nixos/services/media/mydia/default.nix @@ -2,7 +2,6 @@ config, lib, namespace, - system, ... }: let inherit (lib) mkIf mkEnableOption; diff --git a/modules/nixos/services/media/servarr/default.nix b/modules/nixos/services/media/servarr/default.nix index 152742e..0b75d22 100644 --- a/modules/nixos/services/media/servarr/default.nix +++ b/modules/nixos/services/media/servarr/default.nix @@ -3,7 +3,6 @@ config, lib, namespace, - system, terranixLib, ... }: let @@ -156,7 +155,7 @@ in { lib' = lib; terraformConfiguration = terranixLib.terranixConfiguration { - inherit system; + system = pkgs.stdenv.hostPlatform.system; modules = [ ({ diff --git a/modules/nixos/services/networking/default.nix b/modules/nixos/services/networking/default.nix new file mode 100644 index 0000000..8f4b393 --- /dev/null +++ b/modules/nixos/services/networking/default.nix @@ -0,0 +1,7 @@ +{ + imports = [ + ./caddy + ./ssh + ./wireguard + ]; +} diff --git a/modules/nixos/services/observability/default.nix b/modules/nixos/services/observability/default.nix new file mode 100644 index 0000000..1cf015c --- /dev/null +++ b/modules/nixos/services/observability/default.nix @@ -0,0 +1,9 @@ +{ + imports = [ + ./grafana + ./loki + ./prometheus + ./promtail + ./uptime-kuma + ]; +} diff --git a/modules/nixos/services/persistance/default.nix b/modules/nixos/services/persistance/default.nix new file mode 100644 index 0000000..31f6413 --- /dev/null +++ b/modules/nixos/services/persistance/default.nix @@ -0,0 +1,5 @@ +{ + imports = [ + ./postgesql + ]; +} diff --git a/modules/nixos/services/security/default.nix b/modules/nixos/services/security/default.nix new file mode 100644 index 0000000..751ae0c --- /dev/null +++ b/modules/nixos/services/security/default.nix @@ -0,0 +1,5 @@ +{ + imports = [ + ./vaultwarden + ]; +} diff --git a/modules/nixos/services/security/vaultwarden/default.nix b/modules/nixos/services/security/vaultwarden/default.nix index d398df9..c3b75b2 100644 --- a/modules/nixos/services/security/vaultwarden/default.nix +++ b/modules/nixos/services/security/vaultwarden/default.nix @@ -120,7 +120,7 @@ in { enable = true; dbBackend = "postgresql"; - package = pkgs.callPackage (repoRoot + "/packages/vaultwarden/default.nix") {}; + package = pkgs.callPackage (repoRoot + "/packages/vaultwarden/package.nix") {}; config = { SIGNUPS_ALLOWED = false; diff --git a/modules/nixos/services/virtualisation/default.nix b/modules/nixos/services/virtualisation/default.nix new file mode 100644 index 0000000..253a507 --- /dev/null +++ b/modules/nixos/services/virtualisation/default.nix @@ -0,0 +1,5 @@ +{ + imports = [ + ./podman + ]; +} diff --git a/modules/nixos/system/default.nix b/modules/nixos/system/default.nix new file mode 100644 index 0000000..4abcf82 --- /dev/null +++ b/modules/nixos/system/default.nix @@ -0,0 +1,6 @@ +{ + imports = [ + ./networking + ./security + ]; +} diff --git a/modules/nixos/system/security/default.nix b/modules/nixos/system/security/default.nix index e168543..17d34f9 100644 --- a/modules/nixos/system/security/default.nix +++ b/modules/nixos/system/security/default.nix @@ -3,6 +3,12 @@ let cfg = config.${namespace}.system.security; in { + imports = [ + ./boot + ./sops + ./sudo + ]; + options.${namespace}.system.security = {}; config = { @@ -20,4 +26,4 @@ in programs.gnupg.agent.enable = true; }; -} \ No newline at end of file +} diff --git a/modules/nixos/system/security/sops/default.nix b/modules/nixos/system/security/sops/default.nix index 8438454..1583104 100644 --- a/modules/nixos/system/security/sops/default.nix +++ b/modules/nixos/system/security/sops/default.nix @@ -1,4 +1,4 @@ -{ pkgs, config, namespace, repoRoot, system, ... }: +{ pkgs, config, namespace, repoRoot, ... }: let cfg = config.${namespace}.system.security.sops; in @@ -10,7 +10,7 @@ in sops = { defaultSopsFormat = "yaml"; - defaultSopsFile = repoRoot + "/systems/${system}/${config.networking.hostName}/secrets.yml"; + defaultSopsFile = repoRoot + "/systems/${pkgs.stdenv.hostPlatform.system}/${config.networking.hostName}/secrets.yml"; age = { # keyFile = "~/.config/sops/age/keys.txt"; diff --git a/packages/default.nix b/packages/default.nix new file mode 100644 index 0000000..11752d1 --- /dev/null +++ b/packages/default.nix @@ -0,0 +1,24 @@ +{ + config, + lib, + mkPkgs, + ... +}: { + imports = [ + ./studio + ./vaultwarden + ]; + + perSystem = {system, ...}: let + pkgs = mkPkgs system; + in { + _module.args.pkgs = pkgs; + + clan.pkgs = pkgs; + }; + + flake.overlays.default = lib.composeManyExtensions [ + config.flake.overlays."package/studio" + config.flake.overlays."package/vaultwarden" + ]; +} diff --git a/packages/studio/default.nix b/packages/studio/default.nix index 7c9ce0c..cfd99fe 100644 --- a/packages/studio/default.nix +++ b/packages/studio/default.nix @@ -1,109 +1,16 @@ -{ - pkgs, - erosanixLib, -}: let - inherit (builtins) fetchurl replaceStrings; - inherit (pkgs) makeDesktopItem copyDesktopItems wineWow64Packages; - inherit (erosanixLib.x86_64-linux) mkWindowsAppNoCC makeDesktopIcon copyDesktopIcons; - - wine = wineWow64Packages.base; -in - mkWindowsAppNoCC rec { - inherit wine; - - pname = "studio"; - version = "2.25.12"; - - src = fetchurl { - url = "https://studio.download.bricklink.info/Studio2.0+EarlyAccess/Archive/2.25.12_1/Studio+2.0+EarlyAccess.exe"; - sha256 = "sha256:1xl3zvzkzr64zphk7rnpfx3whhbaykzw06m3nd5dc12r2p4sdh3v"; +{inputs, lib, ...}: { + perSystem = {pkgs, system, ...}: { + packages = lib.optionalAttrs (system == "x86_64-linux") { + studio = pkgs.callPackage ./package.nix { + erosanixLib = inputs.erosanix.lib; + }; }; + }; - enableMonoBootPrompt = false; - dontUnpack = true; - - wineArch = "win64"; - enableInstallNotification = true; - - fileMap = { - "$HOME/.config/${pname}/Stud.io" = "drive_c/users/$USER/AppData/Local/Stud.io"; - "$HOME/.config/${pname}/Bricklink" = "drive_c/users/$USER/AppData/LocalLow/Bricklink"; + flake.overlays."package/studio" = final: _prev: + lib.optionalAttrs (final.stdenv.hostPlatform.system == "x86_64-linux") { + studio = final.callPackage ./package.nix { + erosanixLib = inputs.erosanix.lib; + }; }; - - fileMapDuringAppInstall = false; - - persistRegistry = false; - persistRuntimeLayer = true; - inputHashMethod = "version"; - - # Can be used to precisely select the Direct3D implementation. - # - # | enableVulkan | rendererOverride | Direct3D implementation | - # |--------------|------------------|-------------------------| - # | false | null | OpenGL | - # | true | null | Vulkan (DXVK) | - # | * | dxvk-vulkan | Vulkan (DXVK) | - # | * | wine-opengl | OpenGL | - # | * | wine-vulkan | Vulkan (VKD3D) | - enableVulkan = false; - rendererOverride = null; - - enableHUD = false; - - enabledWineSymlinks = {}; - graphicsDriver = "auto"; - inhibitIdle = false; - - nativeBuildInputs = [copyDesktopIcons copyDesktopItems]; - - winAppInstall = replaceStrings ["\r"] [""] '' - wine64 ${src} - - wineserver -W - wine64 reg add 'HKEY_CURRENT_USER\Software\Wine\X11 Driver' /t REG_SZ /v UseTakeFocus /d N /f - ''; - - winAppPreRun = replaceStrings ["\r"] [""] '' - wineserver -W - wine64 reg add 'HKEY_CURRENT_USER\Software\Wine\X11 Driver' /t REG_SZ /v UseTakeFocus /d N /f - ''; - - winAppRun = replaceStrings ["\r"] [""] '' - wine64 "$WINEPREFIX/drive_c/Program Files/Studio 2.0/Studio.exe" "$ARGS" - ''; - - winAppPostRun = ""; - installPhase = replaceStrings ["\r"] [""] '' - runHook preInstall - - ln -s $out/bin/.launcher $out/bin/${pname} - - runHook postInstall - ''; - - desktopItems = [ - (makeDesktopItem { - mimeTypes = []; - - name = pname; - exec = pname; - icon = pname; - desktopName = "Bricklink studio"; - genericName = "Lego creation app"; - categories = []; - }) - ]; - - desktopIcon = makeDesktopIcon { - name = pname; - src = ./studio.png; - }; - - meta = { - description = "App for creating lego builds"; - homepage = "https://www.bricklink.com/v3/studio/main.page"; - license = ""; - maintainers = []; - platforms = ["x86_64-linux"]; - }; - } +} diff --git a/packages/studio/package.nix b/packages/studio/package.nix new file mode 100644 index 0000000..7b40c68 --- /dev/null +++ b/packages/studio/package.nix @@ -0,0 +1,100 @@ +{ + pkgs, + erosanixLib, +}: let + inherit (builtins) fetchurl replaceStrings; + inherit (pkgs) makeDesktopItem copyDesktopItems wineWow64Packages; + inherit (erosanixLib.x86_64-linux) mkWindowsAppNoCC makeDesktopIcon copyDesktopIcons; + + wine = wineWow64Packages.base; +in + mkWindowsAppNoCC rec { + inherit wine; + + pname = "studio"; + version = "2.25.12"; + + src = fetchurl { + url = "https://studio.download.bricklink.info/Studio2.0+EarlyAccess/Archive/2.25.12_1/Studio+2.0+EarlyAccess.exe"; + sha256 = "sha256:1xl3zvzkzr64zphk7rnpfx3whhbaykzw06m3nd5dc12r2p4sdh3v"; + }; + + enableMonoBootPrompt = false; + dontUnpack = true; + + wineArch = "win64"; + enableInstallNotification = true; + + fileMap = { + "$HOME/.config/${pname}/Stud.io" = "drive_c/users/$USER/AppData/Local/Stud.io"; + "$HOME/.config/${pname}/Bricklink" = "drive_c/users/$USER/AppData/LocalLow/Bricklink"; + }; + + fileMapDuringAppInstall = false; + + persistRegistry = false; + persistRuntimeLayer = true; + inputHashMethod = "version"; + + enableVulkan = false; + rendererOverride = null; + + enableHUD = false; + + enabledWineSymlinks = {}; + graphicsDriver = "auto"; + inhibitIdle = false; + + nativeBuildInputs = [copyDesktopIcons copyDesktopItems]; + + winAppInstall = replaceStrings ["\r"] [""] '' + wine64 ${src} + + wineserver -W + wine64 reg add 'HKEY_CURRENT_USER\Software\Wine\X11 Driver' /t REG_SZ /v UseTakeFocus /d N /f + ''; + + winAppPreRun = replaceStrings ["\r"] [""] '' + wineserver -W + wine64 reg add 'HKEY_CURRENT_USER\Software\Wine\X11 Driver' /t REG_SZ /v UseTakeFocus /d N /f + ''; + + winAppRun = replaceStrings ["\r"] [""] '' + wine64 "$WINEPREFIX/drive_c/Program Files/Studio 2.0/Studio.exe" "$ARGS" + ''; + + winAppPostRun = ""; + installPhase = replaceStrings ["\r"] [""] '' + runHook preInstall + + ln -s $out/bin/.launcher $out/bin/${pname} + + runHook postInstall + ''; + + desktopItems = [ + (makeDesktopItem { + mimeTypes = []; + + name = pname; + exec = pname; + icon = pname; + desktopName = "Bricklink studio"; + genericName = "Lego creation app"; + categories = []; + }) + ]; + + desktopIcon = makeDesktopIcon { + name = pname; + src = ./studio.png; + }; + + meta = { + description = "App for creating lego builds"; + homepage = "https://www.bricklink.com/v3/studio/main.page"; + license = ""; + maintainers = []; + platforms = ["x86_64-linux"]; + }; + } diff --git a/packages/vaultwarden/default.nix b/packages/vaultwarden/default.nix index 243288b..035b6da 100644 --- a/packages/vaultwarden/default.nix +++ b/packages/vaultwarden/default.nix @@ -1,29 +1,9 @@ -{ lib, stdenv, rustPlatform, fetchFromGitHub, openssl, pkg-config, postgresql, dbBackend ? "postgresql", ... }: -rustPlatform.buildRustPackage rec { - pname = "vaultwarden"; - version = "1.34.3"; - - src = fetchFromGitHub { - owner = "Timshel"; - repo = "vaultwarden"; - rev = "1.34.3"; - hash = "sha256-Dj0ySVRvBZ/57+UHas3VI8bi/0JBRqn0IW1Dq+405J0="; +{lib, ...}: { + perSystem = {pkgs, ...}: { + packages.vaultwarden = pkgs.callPackage ./package.nix {}; }; - cargoHash = "sha256-4sDagd2XGamBz1XvDj4ycRVJ0F+4iwHOPlj/RglNDqE="; - - # used for "Server Installed" version in admin panel - env.VW_VERSION = version; - - nativeBuildInputs = [ pkg-config ]; - buildInputs = - [ openssl ] - ++ lib.optional (dbBackend == "postgresql") postgresql; - - buildFeatures = dbBackend; - - meta = with lib; { - license = licenses.agpl3Only; - mainProgram = "vaultwarden"; + flake.overlays."package/vaultwarden" = final: _prev: { + vaultwarden = final.callPackage ./package.nix {}; }; -} \ No newline at end of file +} diff --git a/packages/vaultwarden/package.nix b/packages/vaultwarden/package.nix new file mode 100644 index 0000000..c4642fd --- /dev/null +++ b/packages/vaultwarden/package.nix @@ -0,0 +1,28 @@ +{lib, stdenv, rustPlatform, fetchFromGitHub, openssl, pkg-config, postgresql, dbBackend ? "postgresql", ...}: +rustPlatform.buildRustPackage rec { + pname = "vaultwarden"; + version = "1.34.3"; + + src = fetchFromGitHub { + owner = "Timshel"; + repo = "vaultwarden"; + rev = "1.34.3"; + hash = "sha256-Dj0ySVRvBZ/57+UHas3VI8bi/0JBRqn0IW1Dq+405J0="; + }; + + cargoHash = "sha256-4sDagd2XGamBz1XvDj4ycRVJ0F+4iwHOPlj/RglNDqE="; + + env.VW_VERSION = version; + + nativeBuildInputs = [pkg-config]; + buildInputs = + [openssl] + ++ lib.optional (dbBackend == "postgresql") postgresql; + + buildFeatures = dbBackend; + + meta = with lib; { + license = licenses.agpl3Only; + mainProgram = "vaultwarden"; + }; +} diff --git a/scratchpad b/scratchpad new file mode 100644 index 0000000..afff9b8 --- /dev/null +++ b/scratchpad @@ -0,0 +1 @@ +--resume=18a19308-41c9-4898-ab01-594195fd75a1 diff --git a/shells/default/default.nix b/shells/default/default.nix index ed12b5c..8be0232 100644 --- a/shells/default/default.nix +++ b/shells/default/default.nix @@ -1,22 +1,22 @@ { - mkShell, inputs, - pkgs, - stdenv, ... -}: -mkShell { - packages = with pkgs; [ - bash - sops - just - yq - pwgen - alejandra - nil - nixd - openssl - inputs.clan-core.packages.${stdenv.hostPlatform.system}.clan-cli - nix-output-monitor - ]; +}: { + perSystem = {pkgs, system, ...}: { + devShells.default = pkgs.mkShell { + packages = with pkgs; [ + bash + sops + just + yq + pwgen + alejandra + nil + nixd + openssl + inputs.clan-core.packages.${system}.clan-cli + nix-output-monitor + ]; + }; + }; } diff --git a/systems/x86_64-install-iso/minimal/default.nix b/systems/x86_64-install-iso/minimal/default.nix deleted file mode 100644 index 7d80104..0000000 --- a/systems/x86_64-install-iso/minimal/default.nix +++ /dev/null @@ -1,121 +0,0 @@ -{ pkgs, lib, ... }: -let - inherit (lib) mkForce; -in -{ - boot = { - supportedFilesystems = mkForce ["btrfs" "reiserfs" "vfat" "f2fs" "xfs" "ntfs" "cifs"]; - - loader.efi.canTouchEfiVariables = true; - }; - - networking = { - wireless.enable = mkForce false; - networkmanager.enable = true; - }; - - nix = { - enable = true; - extraOptions = "experimental-features = nix-command flakes"; - channel.enable = false; - - settings = { - experimental-features = [ "nix-command" "flakes" ]; - allowed-users = [ "@wheel" ]; - trusted-users = [ "@wheel" ]; - - auto-optimise-store = true; - connect-timeout = 5; - http-connections = 50; - log-lines = 50; # more log lines in case of error - min-free = 1 * (1024 * 1024 * 1024); # GiB # start garbage collector - max-free = 50 * (1024 * 1024 * 1024); # GiB # until - warn-dirty = false; - }; - }; - - services = { - qemuGuest.enable = true; - openssh = { - enable = true; - settings.PermitRootLogin = mkForce "yes"; - }; - }; - - users.users.nixos = { - initialPassword = "kaas"; - initialHashedPassword = mkForce null; - extraGroups = [ "networkmanager" ]; - }; - - environment.systemPackages = with pkgs; [ - # sbctl - git - # gum - # ( - # writeShellScriptBin "rescue" '' - # #!/usr/bin/env bash - # set -euo pipefail - - # gum "device name" - - # sudo mkdir -p /mnt/{dev,proc,sys,boot} - # sudo mount -o bind /dev /mnt/dev - # sudo mount -o bind /proc /mnt/proc - # sudo mount -o bind /sys /mnt/sys - # sudo chroot /mnt /nix/var/nix/profiles/system/activate - # sudo chroot /mnt /run/current-system/sw/bin/bash - - # sudo mount /dev/vda1 /mnt/boot - # sudo cryptsetup open /dev/vda3 cryptroot - # sudo mount /dev/mapper/cryptroot /mnt/ - - # sudo nixos-enter - # '' - # ) - # ( - # writeShellScriptBin "nix_installer" - # '' - # #!/usr/bin/env bash - # set -euo pipefail - - # if [ "$(id -u)" -eq 0 ]; then - # echo "ERROR! $(basename "$0") should be run as a regular user" - # exit 1 - # fi - - # if [ ! -d "$HOME/github/sneeuwvlok/.git" ]; then - # git clone https://github.com/chris-kruining/sneeuwvlok.git "$HOME/github/sneeuwvlok" - # fi - - # TARGET_HOST=$(ls -1 ~/github/sneeuwvlok/systems/*/default.nix | cut -d'/' -f6 | grep -v iso | gum choose) - - # if [ ! -e "$HOME/github/sneeuwvlok/hosts/$TARGET_HOST/disks.nix" ]; then - # echo "ERROR! $(basename "$0") could not find the required $HOME/github/sneeuwvlok/hosts/$TARGET_HOST/disks.nix" - # exit 1 - # fi - - # gum confirm --default=false \ - # "🔥 🔥 🔥 WARNING!!!! This will ERASE ALL DATA on the disk $TARGET_HOST. Are you sure you want to continue?" - - # echo "Partitioning Disks" - # sudo nix run github:nix-community/disko \ - # --extra-experimental-features "nix-command flakes" \ - # --no-write-lock-file \ - # -- \ - # --mode zap_create_mount \ - # "$HOME/dotfiles/hosts/$TARGET_HOST/disks.nix" - - # #echo "Creating blank volume" - # #sudo btrfs subvolume snapshot -r /mnt/ /mnt/root-blank - - # #echo "Set up attic binary cache" - # #attic use prod || true - - # sudo nixos-install --flake "$HOME/dotfiles#$TARGET_HOST" - # '' - # ) - ]; - - system.stateVersion = "23.11"; -} diff --git a/users/chris/mandos.nix b/users/chris/mandos.nix new file mode 100644 index 0000000..a883431 --- /dev/null +++ b/users/chris/mandos.nix @@ -0,0 +1,38 @@ +{...}: { + home-manager.users.chris = {osConfig, ...}: { + home.stateVersion = osConfig.system.stateVersion; + + programs.git = { + settings.user = { + name = "Chris Kruining"; + email = "chris@kruining.eu"; + }; + }; + + sneeuwvlok = { + defaults = { + shell = "zsh"; + terminal = "ghostty"; + browser = "zen"; + editor = "zed"; + }; + + shell = { + corePkgs.enable = true; + }; + + themes = { + enable = true; + theme = "everforest"; + polarity = "dark"; + }; + + application = { + bitwarden.enable = true; + teamspeak.enable = true; + steam.enable = true; + zen.enable = true; + }; + }; + }; +} diff --git a/users/chris/manwe.nix b/users/chris/manwe.nix new file mode 100644 index 0000000..a4f077b --- /dev/null +++ b/users/chris/manwe.nix @@ -0,0 +1,61 @@ +{...}: { + home-manager.users.chris = {osConfig, ...}: { + home.stateVersion = osConfig.system.stateVersion; + + programs.git = { + settings.user = { + name = "Chris Kruining"; + email = "chris@kruining.eu"; + }; + }; + + sneeuwvlok = { + defaults = { + shell = "zsh"; + terminal = "ghostty"; + browser = "zen"; + editor = "zed"; + }; + + shell = { + corePkgs.enable = true; + }; + + themes = { + enable = true; + theme = "everforest"; + polarity = "dark"; + }; + + development = { + rust.enable = true; + javascript.enable = true; + dotnet.enable = true; + }; + + application = { + bitwarden.enable = true; + discord.enable = true; + ladybird.enable = true; + matrix.enable = true; + obs.enable = true; + onlyoffice.enable = true; + signal.enable = true; + steam.enable = true; + studio.enable = true; + teamspeak.enable = true; + thunderbird.enable = true; + zen.enable = true; + }; + + shell.zsh.enable = true; + terminal.ghostty.enable = true; + + editor = { + zed.enable = true; + nvim.enable = true; + nano.enable = true; + }; + }; + }; +} diff --git a/users/chris/orome.nix b/users/chris/orome.nix new file mode 100644 index 0000000..ad588d0 --- /dev/null +++ b/users/chris/orome.nix @@ -0,0 +1,51 @@ +{...}: { + home-manager.users.chris = {osConfig, ...}: { + home.stateVersion = osConfig.system.stateVersion; + + programs.git = { + settings.user = { + name = "Chris Kruining"; + email = "chris@kruining.eu"; + }; + }; + + sneeuwvlok = { + defaults = { + shell = "zsh"; + terminal = "ghostty"; + browser = "zen"; + editor = "zed"; + }; + + shell = { + corePkgs.enable = true; + }; + + themes = { + enable = true; + theme = "everforest"; + polarity = "dark"; + }; + + development = { + javascript.enable = true; + dotnet.enable = true; + }; + + application = { + bitwarden.enable = true; + onlyoffice.enable = true; + signal.enable = true; + zen.enable = true; + }; + + shell.zsh.enable = true; + terminal.ghostty.enable = true; + + editor = { + zed.enable = true; + nano.enable = true; + }; + }; + }; +} diff --git a/users/chris/tulkas.nix b/users/chris/tulkas.nix new file mode 100644 index 0000000..a883431 --- /dev/null +++ b/users/chris/tulkas.nix @@ -0,0 +1,38 @@ +{...}: { + home-manager.users.chris = {osConfig, ...}: { + home.stateVersion = osConfig.system.stateVersion; + + programs.git = { + settings.user = { + name = "Chris Kruining"; + email = "chris@kruining.eu"; + }; + }; + + sneeuwvlok = { + defaults = { + shell = "zsh"; + terminal = "ghostty"; + browser = "zen"; + editor = "zed"; + }; + + shell = { + corePkgs.enable = true; + }; + + themes = { + enable = true; + theme = "everforest"; + polarity = "dark"; + }; + + application = { + bitwarden.enable = true; + teamspeak.enable = true; + steam.enable = true; + zen.enable = true; + }; + }; + }; +} diff --git a/users/default.nix b/users/default.nix new file mode 100644 index 0000000..c6867e1 --- /dev/null +++ b/users/default.nix @@ -0,0 +1,78 @@ +{ + config, + inputs, + lib, + mkPkgs, + sharedContext, + ... +}: let + inherit (lib) mkOption types; + + mkHomeUserModule = spec: + (import spec.path {}).home-manager.users.${spec.user}; +in { + options.localUsers = { + homeEntries = mkOption { + type = types.attrsOf types.raw; + default = {}; + }; + + homeSharedModules = mkOption { + type = types.listOf types.raw; + default = []; + }; + }; + + config = { + localUsers.homeEntries = { + "chris@mandos" = { + machine = "mandos"; + user = "chris"; + path = ../users/chris/mandos.nix; + }; + "chris@manwe" = { + machine = "manwe"; + user = "chris"; + path = ../users/chris/manwe.nix; + }; + "chris@orome" = { + machine = "orome"; + user = "chris"; + path = ../users/chris/orome.nix; + }; + "chris@tulkas" = { + machine = "tulkas"; + user = "chris"; + path = ../users/chris/tulkas.nix; + }; + }; + + localUsers.homeSharedModules = + [ + inputs.stylix.homeModules.stylix + inputs.plasma-manager.homeModules.plasma-manager + inputs.zen-browser.homeModules.default + ] + ++ [ ../modules/home ]; + + flake.homeConfigurations = lib.mapAttrs (_: spec: + inputs.home-manager.lib.homeManagerConfiguration { + pkgs = mkPkgs "x86_64-linux"; + extraSpecialArgs = + sharedContext + // { + osConfig = config.flake.nixosConfigurations.${spec.machine}.config; + }; + modules = + config.localUsers.homeSharedModules + ++ [ + { + home.username = spec.user; + home.homeDirectory = "/home/${spec.user}"; + } + (mkHomeUserModule spec) + ]; + }) + config.localUsers.homeEntries; + }; +}