diff --git a/flake.lock b/flake.lock index b40ba97..646c4ec 100644 --- a/flake.lock +++ b/flake.lock @@ -230,22 +230,6 @@ "type": "github" } }, - "gh-collaborators": { - "flake": false, - "locked": { - "lastModified": 1736185279, - "narHash": "sha256-SGmP/8Fvf2rcYkwscMOFG01Y0VJGb/TXrNZtLacurxA=", - "owner": "katiem0", - "repo": "gh-collaborators", - "rev": "bf412dde50605e48af86f291c2ac8714f2c1b228", - "type": "github" - }, - "original": { - "owner": "katiem0", - "repo": "gh-collaborators", - "type": "github" - } - }, "hmts-nvim-src": { "flake": false, "locked": { @@ -536,55 +520,6 @@ "type": "github" } }, - "osc": { - "flake": false, - "locked": { - "lastModified": 1732197203, - "narHash": "sha256-xL9mqwb+C6WbuJ/qk0lNbi9xd24PbKi5G0FlwaH5XPk=", - "owner": "theimpostor", - "repo": "osc", - "rev": "87b316b3f96a22fd85654cd7bd091f2cac1c6691", - "type": "github" - }, - "original": { - "owner": "theimpostor", - "ref": "v0.4.6", - "repo": "osc", - "type": "github" - } - }, - "ren": { - "flake": false, - "locked": { - "lastModified": 1704996573, - "narHash": "sha256-zVIt6Xp+Mvym6gySvHIZJt1QgzKVP/wbTGTubWk6kzI=", - "owner": "robenkleene", - "repo": "ren-find", - "rev": "50c40172e354caffee48932266edd7c7a76a20fd", - "type": "github" - }, - "original": { - "owner": "robenkleene", - "repo": "ren-find", - "type": "github" - } - }, - "rep": { - "flake": false, - "locked": { - "lastModified": 1707216692, - "narHash": "sha256-/dH+mNtNHaYFndVhoqmz4Sc3HeemoQt1HGD98mb9Qhw=", - "owner": "robenkleene", - "repo": "rep-grep", - "rev": "10510d47e392cb9d30a861c69f702fd194b3fa88", - "type": "github" - }, - "original": { - "owner": "robenkleene", - "repo": "rep-grep", - "type": "github" - } - }, "root": { "inputs": { "baleia-nvim-src": "baleia-nvim-src", @@ -594,7 +529,6 @@ "darwin": "darwin", "disko": "disko", "fidget-nvim-src": "fidget-nvim-src", - "gh-collaborators": "gh-collaborators", "hmts-nvim-src": "hmts-nvim-src", "home-manager": "home-manager", "mac-app-util": "mac-app-util", @@ -611,9 +545,6 @@ "nvim-lspconfig-src": "nvim-lspconfig-src", "nvim-tree-lua-src": "nvim-tree-lua-src", "nvim-treesitter-src": "nvim-treesitter-src", - "osc": "osc", - "ren": "ren", - "rep": "rep", "snipe-nvim-src": "snipe-nvim-src", "telescope-nvim-src": "telescope-nvim-src", "telescope-project-nvim-src": "telescope-project-nvim-src", diff --git a/flake.nix b/flake.nix index ba78131..8dbf04d 100644 --- a/flake.nix +++ b/flake.nix @@ -182,27 +182,6 @@ # inputs.nixpkgs.follows = "nixpkgs"; # }; - # Ren and rep - CLI find and replace - rep = { - url = "github:robenkleene/rep-grep"; - flake = false; - }; - ren = { - url = "github:robenkleene/ren-find"; - flake = false; - }; - - gh-collaborators = { - url = "github:katiem0/gh-collaborators"; - flake = false; - }; - - # Clipboard over SSH - osc = { - url = "github:theimpostor/osc/v0.4.6"; - flake = false; - }; - # Nextcloud Apps nextcloud-news = { # https://github.com/nextcloud/news/releases @@ -281,10 +260,7 @@ (import ./overlays/mpv-scripts.nix inputs) (import ./overlays/nextcloud-apps.nix inputs) (import ./overlays/betterlockscreen.nix) - (import ./overlays/gh-collaborators.nix inputs) (import ./overlays/osc.nix inputs) - (import ./overlays/ren-rep.nix inputs) - (import ./overlays/volnoti.nix) ]; # System types to support. @@ -297,24 +273,42 @@ # Helper function to generate an attrset '{ x86_64-linux = f "x86_64-linux"; ... }'. forAllSystems = nixpkgs.lib.genAttrs supportedSystems; + + hosts = import ./hosts; + + buildHome = { }; + + buildNixos = + pkgs: modules: + nixpkgs.lib.nixosSystem { + inherit pkgs; + modules = modules ++ [ + inputs.home-manager.nixosModules.home-manager + inputs.disko.nixosModules.disko + inputs.wsl.nixosModules.wsl + ]; + }; + + buildDarwin = + pkgs: modules: + inputs.darwin.lib.darwinSystem { + inherit pkgs; + modules = modules ++ [ + inputs.home-manager.darwinModules.home-manager + inputs.mac-app-util.darwinModules.default + ]; + }; + in rec { # Contains my full system builds, including home-manager # nixos-rebuild switch --flake .#tempest - nixosConfigurations = { - arrow = import ./hosts/arrow { inherit inputs globals overlays; }; - tempest = import ./hosts/tempest { inherit inputs globals overlays; }; - hydra = import ./hosts/hydra { inherit inputs globals overlays; }; - flame = import ./hosts/flame { inherit inputs globals overlays; }; - swan = import ./hosts/swan { inherit inputs globals overlays; }; - }; + nixosConfigurations = builtins.mapAttrs buildNixos (import ./hosts/nixos inputs); # Contains my full Mac system builds, including home-manager # darwin-rebuild switch --flake .#lookingglass - darwinConfigurations = { - lookingglass = import ./hosts/lookingglass { inherit inputs globals overlays; }; - }; + darwinConfigurations = builtins.mapAttrs buildDarwin (import ./hosts/darwin inputs); # For quickly applying home-manager settings with: # home-manager switch --flake .#tempest @@ -355,19 +349,11 @@ x86_64-linux.arrow = inputs.nixos-generators.nixosGenerate rec { system = "x86_64-linux"; format = "iso"; - specialArgs = { - pkgs-stable = import inputs.nixpkgs-stable { inherit system; }; - pkgs-caddy = import inputs.nixpkgs-caddy { inherit system; }; - }; modules = import ./hosts/arrow/modules.nix { inherit inputs globals overlays; }; }; x86_64-linux.arrow-aws = inputs.nixos-generators.nixosGenerate rec { system = "x86_64-linux"; format = "amazon"; - specialArgs = { - pkgs-stable = import inputs.nixpkgs-stable { inherit system; }; - pkgs-caddy = import inputs.nixpkgs-caddy { inherit system; }; - }; modules = import ./hosts/arrow/modules.nix { inherit inputs globals overlays; } ++ [ ( { ... }: diff --git a/hosts/default.nix b/hosts/default.nix index a6d3e4a..3c91cd7 100644 --- a/hosts/default.nix +++ b/hosts/default.nix @@ -1,16 +1,6 @@ # Return a list of all hosts -{ lib, ... }: - -lib.pipe (lib.filesystem.listFilesRecursive ./.) [ - # Get only files ending in default.nix - (builtins.filter (name: lib.hasSuffix "default.nix" name)) - # Import each host function - map - (file: { - name = builtins.baseNameOf (builtins.dirOf file); - value = import file; - }) - # Convert to an attrset of hostname -> host function - (builtins.listToAttrs) -] +{ + darwinConfigurations = import ./nix-darwin; + nixosConfigurations = import ./nixos; +} diff --git a/hosts/nix-darwin/default.nix b/hosts/nix-darwin/default.nix new file mode 100644 index 0000000..2303757 --- /dev/null +++ b/hosts/nix-darwin/default.nix @@ -0,0 +1,16 @@ +# Return a list of all nix-darwin hosts + +{ lib, ... }: + +lib.pipe (lib.filesystem.listFilesRecursive ./.) [ + # Get only files ending in default.nix + (builtins.filter (name: lib.hasSuffix "default.nix" name)) + # Import each host function + map + (file: { + name = builtins.baseNameOf (builtins.dirOf file); + value = import file; + }) + # Convert to an attrset of hostname -> host function + (builtins.listToAttrs) +] diff --git a/hosts/lookingglass/default.nix b/hosts/nix-darwin/lookingglass/default.nix similarity index 100% rename from hosts/lookingglass/default.nix rename to hosts/nix-darwin/lookingglass/default.nix diff --git a/hosts/arrow/aws/ec2.tf b/hosts/nixos/arrow/aws/ec2.tf similarity index 100% rename from hosts/arrow/aws/ec2.tf rename to hosts/nixos/arrow/aws/ec2.tf diff --git a/hosts/arrow/aws/image.tf b/hosts/nixos/arrow/aws/image.tf similarity index 100% rename from hosts/arrow/aws/image.tf rename to hosts/nixos/arrow/aws/image.tf diff --git a/hosts/arrow/aws/main.tf b/hosts/nixos/arrow/aws/main.tf similarity index 100% rename from hosts/arrow/aws/main.tf rename to hosts/nixos/arrow/aws/main.tf diff --git a/hosts/arrow/aws/outputs.tf b/hosts/nixos/arrow/aws/outputs.tf similarity index 100% rename from hosts/arrow/aws/outputs.tf rename to hosts/nixos/arrow/aws/outputs.tf diff --git a/hosts/arrow/aws/variables.tf b/hosts/nixos/arrow/aws/variables.tf similarity index 100% rename from hosts/arrow/aws/variables.tf rename to hosts/nixos/arrow/aws/variables.tf diff --git a/hosts/arrow/default.nix b/hosts/nixos/arrow/default.nix similarity index 100% rename from hosts/arrow/default.nix rename to hosts/nixos/arrow/default.nix diff --git a/hosts/arrow/modules.nix b/hosts/nixos/arrow/modules.nix similarity index 100% rename from hosts/arrow/modules.nix rename to hosts/nixos/arrow/modules.nix diff --git a/hosts/arrow/vultr/main.tf b/hosts/nixos/arrow/vultr/main.tf similarity index 100% rename from hosts/arrow/vultr/main.tf rename to hosts/nixos/arrow/vultr/main.tf diff --git a/hosts/nixos/default.nix b/hosts/nixos/default.nix new file mode 100644 index 0000000..24b0b2f --- /dev/null +++ b/hosts/nixos/default.nix @@ -0,0 +1,20 @@ +# Return a list of all NixOS hosts + +{ nixpkgs, ... }: + +let + inherit (nixpkgs) lib; +in + +lib.pipe (lib.filesystem.listFilesRecursive ./.) [ + # Get only files ending in default.nix + (builtins.filter (name: lib.hasSuffix "default.nix" name)) + # Import each host function + map + (file: { + name = builtins.baseNameOf (builtins.dirOf file); + value = import file; + }) + # Convert to an attrset of hostname -> host function + (builtins.listToAttrs) +] diff --git a/hosts/flame/default.nix b/hosts/nixos/flame/default.nix similarity index 100% rename from hosts/flame/default.nix rename to hosts/nixos/flame/default.nix diff --git a/hosts/hydra/default.nix b/hosts/nixos/hydra/default.nix similarity index 100% rename from hosts/hydra/default.nix rename to hosts/nixos/hydra/default.nix diff --git a/hosts/staff/default.nix b/hosts/nixos/staff/default.nix similarity index 100% rename from hosts/staff/default.nix rename to hosts/nixos/staff/default.nix diff --git a/hosts/swan/default.nix b/hosts/nixos/swan/default.nix similarity index 95% rename from hosts/swan/default.nix rename to hosts/nixos/swan/default.nix index efb9029..191a528 100644 --- a/hosts/swan/default.nix +++ b/hosts/nixos/swan/default.nix @@ -8,12 +8,8 @@ ... }: -inputs.nixpkgs.lib.nixosSystem rec { +inputs.nixpkgs.lib.nixosSystem { system = "x86_64-linux"; - specialArgs = { - pkgs-stable = import inputs.nixpkgs-stable { inherit system; }; - pkgs-caddy = import inputs.nixpkgs-caddy { inherit system; }; - }; modules = [ globals inputs.home-manager.nixosModules.home-manager diff --git a/hosts/tempest/default.nix b/hosts/nixos/tempest/default.nix similarity index 100% rename from hosts/tempest/default.nix rename to hosts/nixos/tempest/default.nix diff --git a/modules/common/default.nix b/modules/common/default.nix index 7e292d1..0aedeb3 100644 --- a/modules/common/default.nix +++ b/modules/common/default.nix @@ -53,16 +53,16 @@ # type = lib.types.str; # description = "Link to dotfiles repository HTTPS URL."; # }; - unfreePackages = lib.mkOption { - type = lib.types.listOf lib.types.str; - description = "List of unfree packages to allow."; - default = [ ]; - }; - insecurePackages = lib.mkOption { - type = lib.types.listOf lib.types.str; - description = "List of insecure packages to allow."; - default = [ ]; - }; + # unfreePackages = lib.mkOption { + # type = lib.types.listOf lib.types.str; + # description = "List of unfree packages to allow."; + # default = [ ]; + # }; + # insecurePackages = lib.mkOption { + # type = lib.types.listOf lib.types.str; + # description = "List of insecure packages to allow."; + # default = [ ]; + # }; # hostnames = { # audiobooks = lib.mkOption { # type = lib.types.str; diff --git a/overlays/gh-collaborators.nix b/overlays/gh-collaborators.nix deleted file mode 100644 index 5220cc0..0000000 --- a/overlays/gh-collaborators.nix +++ /dev/null @@ -1,17 +0,0 @@ -inputs: _final: prev: { - - gh-collaborators = prev.buildGoModule rec { - pname = "gh-collaborators"; - version = "v3.0.0"; - src = inputs.gh-collaborators; - - vendorHash = "sha256-9qmvG2q9t1Zj8yhKFyA99IaJ90R/gRVdQVjdliVKLRE"; - - ldflags = [ - "-s" - "-w" - "-X github.com/katiem0/gh-collaborators/cmd.Version=${version}" - # "-X main.Version=${version}" - ]; - }; -} diff --git a/overlays/osc.nix b/overlays/osc.nix deleted file mode 100644 index 12db041..0000000 --- a/overlays/osc.nix +++ /dev/null @@ -1,15 +0,0 @@ -inputs: _final: prev: { - - osc = prev.buildGoModule { - pname = "osc"; - version = "v0.4.6"; - src = inputs.osc; - - vendorHash = "sha256-POtQWIjPObsfa3YZ1dLZgedZFUcc4HeTWjU20AucoKc="; - - ldflags = [ - "-s" - "-w" - ]; - }; -} diff --git a/overlays/pkgs.nix b/overlays/pkgs.nix index ec99abe..7390f65 100644 --- a/overlays/pkgs.nix +++ b/overlays/pkgs.nix @@ -13,7 +13,7 @@ let packagesDirectory = lib.filesystem.listFilesRecursive ../pkgs; packages = lib.pipe packagesDirectory [ # Get only files called package.nix - (builtins.filter (name: (name == "package.nix"))) + (builtins.filter (name: lib.hasSuffix "package.nix")) # Apply callPackage to create a derivation (builtins.map prev.callPackage) # Convert the list to an attrset diff --git a/overlays/ren-rep.nix b/overlays/ren-rep.nix deleted file mode 100644 index 4c8b30f..0000000 --- a/overlays/ren-rep.nix +++ /dev/null @@ -1,16 +0,0 @@ -inputs: _final: prev: { - - ren = prev.rustPlatform.buildRustPackage { - pname = "ren-find"; - version = "0.0.7"; - src = inputs.ren; - cargoHash = "sha256-3bI3j2xvNHp4kyLEq/DZvRJBF2rn6pE4n8oXh67edDI="; - }; - - # rep = prev.rustPlatform.buildRustPackage { - # pname = "rep-grep"; - # version = "0.0.7"; - # src = inputs.rep; - # cargoHash = "sha256-GEr3VvQ0VTKHUbW/GFEgwLpQWP2ZhS/4KYjDvfFLgxo="; - # }; -} diff --git a/overlays/volnoti.nix b/overlays/volnoti.nix deleted file mode 100644 index 5c68b47..0000000 --- a/overlays/volnoti.nix +++ /dev/null @@ -1,44 +0,0 @@ -# Fix: Volnoti error: 'volnoti' has been removed due to lack of maintenance upstream. -_final: prev: { - volnoti = prev.stdenv.mkDerivation { - pname = "volnoti-unstable"; - version = "2013-09-23"; - src = prev.fetchFromGitHub { - owner = "davidbrazdil"; - repo = "volnoti"; - rev = "4af7c8e54ecc499097121909f02ecb42a8a60d24"; - sha256 = "155lb7w563dkdkdn4752hl0zjhgnq3j4cvs9z98nb25k1xpmpki7"; - }; - patches = [ - # Fix dbus interface headers. See - # https://github.com/davidbrazdil/volnoti/pull/10 - (prev.fetchpatch { - url = "https://github.com/davidbrazdil/volnoti/commit/623ad8ea5c3ac8720d00a2ced4b6163aae38c119.patch"; - sha256 = "046zfdjmvhb7jrsgh04vfgi35sgy1zkrhd3bzdby3nvds1wslfam"; - }) - ]; - nativeBuildInputs = with prev; [ - pkg-config - autoreconfHook - wrapGAppsHook3 - ]; - buildInputs = with prev; [ - dbus - gdk-pixbuf - glib - xorg.libX11 - gtk2 - dbus-glib - librsvg - ]; - meta = with prev.lib; { - description = "Lightweight volume notification for Linux"; - homepage = "https://github.com/davidbrazdil/volnoti"; - license = licenses.gpl3; - platforms = platforms.linux; - maintainers = [ ]; - # Broken by https://github.com/nix-community/home-manager/pull/5725/commits/98bf8de65dc1ed12c6443b18f6f24d36e9c438d6 - mainProgram = "volnoti"; - }; - }; -} diff --git a/pkgs/applications/misc/volnoti/package.nix b/pkgs/applications/misc/volnoti/package.nix new file mode 100644 index 0000000..0244b12 --- /dev/null +++ b/pkgs/applications/misc/volnoti/package.nix @@ -0,0 +1,44 @@ +# Fix: Volnoti error: 'volnoti' has been removed due to lack of maintenance upstream. + +{ pkgs, lib, ... }: +pkgs.stdenv.mkDerivation { + pname = "volnoti-unstable"; + version = "2013-09-23"; + src = pkgs.fetchFromGitHub { + owner = "davidbrazdil"; + repo = "volnoti"; + rev = "4af7c8e54ecc499097121909f02ecb42a8a60d24"; + sha256 = "155lb7w563dkdkdn4752hl0zjhgnq3j4cvs9z98nb25k1xpmpki7"; + }; + patches = [ + # Fix dbus interface headers. See + # https://github.com/davidbrazdil/volnoti/pull/10 + (pkgs.fetchpatch { + url = "https://github.com/davidbrazdil/volnoti/commit/623ad8ea5c3ac8720d00a2ced4b6163aae38c119.patch"; + sha256 = "046zfdjmvhb7jrsgh04vfgi35sgy1zkrhd3bzdby3nvds1wslfam"; + }) + ]; + nativeBuildInputs = with pkgs; [ + pkg-config + autoreconfHook + wrapGAppsHook3 + ]; + buildInputs = with pkgs; [ + dbus + gdk-pixbuf + glib + xorg.libX11 + gtk2 + dbus-glib + librsvg + ]; + meta = with lib; { + description = "Lightweight volume notification for Linux"; + homepage = "https://github.com/davidbrazdil/volnoti"; + license = licenses.gpl3; + platforms = platforms.linux; + maintainers = [ ]; + # Broken by https://github.com/nix-community/home-manager/pull/5725/commits/98bf8de65dc1ed12c6443b18f6f24d36e9c438d6 + mainProgram = "volnoti"; + }; +} diff --git a/pkgs/tools/misc/gh-collaborators/package.nix b/pkgs/tools/misc/gh-collaborators/package.nix new file mode 100644 index 0000000..08ad871 --- /dev/null +++ b/pkgs/tools/misc/gh-collaborators/package.nix @@ -0,0 +1,21 @@ +{ pkgs, ... }: + +pkgs.buildGoModule rec { + pname = "gh-collaborators"; + version = "v3.0.0"; + src = { + owner = "katiem0"; + repo = "gh-collaborators"; + rev = "4af7c8e54ecc499097121909f02ecb42a8a60d24"; + sha256 = pkgs.lib.fakeHash; + }; + + vendorHash = "sha256-9qmvG2q9t1Zj8yhKFyA99IaJ90R/gRVdQVjdliVKLRE"; + + ldflags = [ + "-s" + "-w" + "-X github.com/katiem0/gh-collaborators/cmd.Version=${version}" + # "-X main.Version=${version}" + ]; +} diff --git a/pkgs/tools/misc/osc/package.nix b/pkgs/tools/misc/osc/package.nix new file mode 100644 index 0000000..1fa0f0b --- /dev/null +++ b/pkgs/tools/misc/osc/package.nix @@ -0,0 +1,21 @@ +# Clipboard over SSH + +{ pkgs, ... }: + +pkgs.buildGoModule { + pname = "osc"; + version = "v0.4.6"; + src = { + owner = "theimpostor"; + repo = "osc"; + rev = "4af7c8e54ecc499097121909f02ecb42a8a60d24"; + sha256 = pkgs.lib.fakeHash; + }; + + vendorHash = "sha256-POtQWIjPObsfa3YZ1dLZgedZFUcc4HeTWjU20AucoKc="; + + ldflags = [ + "-s" + "-w" + ]; +} diff --git a/pkgs/tools/text/ren/package.nix b/pkgs/tools/text/ren/package.nix new file mode 100644 index 0000000..240c99e --- /dev/null +++ b/pkgs/tools/text/ren/package.nix @@ -0,0 +1,12 @@ +{ pkgs, ... }: +pkgs.rustPlatform.buildRustPackage { + pname = "ren-find"; + version = "0.0.7"; + src = pkgs.fetchFromGitHub { + owner = "robenkleene"; + repo = "ren-find"; + rev = "4af7c8e54ecc499097121909f02ecb42a8a60d24"; + sha256 = pkgs.lib.fakeHash; + }; + cargoHash = "sha256-3bI3j2xvNHp4kyLEq/DZvRJBF2rn6pE4n8oXh67edDI="; +} diff --git a/pkgs/tools/text/rep/package.nix b/pkgs/tools/text/rep/package.nix new file mode 100644 index 0000000..b538020 --- /dev/null +++ b/pkgs/tools/text/rep/package.nix @@ -0,0 +1,12 @@ +{ pkgs, ... }: +pkgs.rustPlatform.buildRustPackage { + pname = "rep-grep"; + version = "0.0.7"; + src = pkgs.fetchFromGitHub { + owner = "robenkleene"; + repo = "rep-grep"; + rev = "4af7c8e54ecc499097121909f02ecb42a8a60d24"; + sha256 = pkgs.lib.fakeHash; + }; + cargoHash = "sha256-GEr3VvQ0VTKHUbW/GFEgwLpQWP2ZhS/4KYjDvfFLgxo="; +} diff --git a/platforms/home-manager/modules/nixpkgs.nix b/platforms/home-manager/modules/nixpkgs.nix new file mode 100644 index 0000000..fda668d --- /dev/null +++ b/platforms/home-manager/modules/nixpkgs.nix @@ -0,0 +1,29 @@ +{ config, lib, ... }: +{ + + options = { + allowUnfreePackages = lib.mkOption { + type = lib.types.listOf lib.types.str; + description = "List of unfree packages to allow."; + default = [ ]; + }; + allowInsecurePackages = lib.mkOption { + type = lib.types.listOf lib.types.str; + description = "List of insecure packages to allow."; + default = [ ]; + }; + }; + + config = { + + # Allow specified unfree packages (identified elsewhere) + # Retrieves package object based on string name + nixpkgs.config.allowUnfreePredicate = + pkg: builtins.elem (lib.getName pkg) config.allowUnfreePackages; + + # Allow specified insecure packages (identified elsewhere) + nixpkgs.config.permittedInsecurePackages = config.allowInsecurePackages; + + }; + +} diff --git a/platforms/home-manager/modules/nmasur/presets/programs/_1password.nix b/platforms/home-manager/modules/nmasur/presets/programs/_1password.nix index 4c2f5b4..72ce826 100644 --- a/platforms/home-manager/modules/nmasur/presets/programs/_1password.nix +++ b/platforms/home-manager/modules/nmasur/presets/programs/_1password.nix @@ -14,7 +14,7 @@ in options.nmasur.presets.programs._1password.enable = lib.mkEnableOption "1Password password manager"; config = lib.mkIf cfg.enable { - unfreePackages = [ + allowUnfreePackages = [ "1password" "_1password-gui" "1password-cli" diff --git a/platforms/home-manager/modules/nmasur/presets/programs/discord.nix b/platforms/home-manager/modules/nmasur/presets/programs/discord.nix index 2d45e9a..cacf40a 100644 --- a/platforms/home-manager/modules/nmasur/presets/programs/discord.nix +++ b/platforms/home-manager/modules/nmasur/presets/programs/discord.nix @@ -14,7 +14,7 @@ in options.nmasur.presets.programs.discord.enable = lib.mkEnableOption "Discord chat"; config = lib.mkIf cfg.enable { - unfreePackages = [ "discord" ]; + allowUnfreePackages = [ "discord" ]; home.packages = [ pkgs.discord ]; xdg.configFile."discord/settings.json".text = pkgs.formats.json { BACKGROUND_COLOR = "#202225"; diff --git a/platforms/home-manager/modules/nmasur/presets/programs/firefox.nix b/platforms/home-manager/modules/nmasur/presets/programs/firefox.nix index ab9ef41..bdfb95e 100644 --- a/platforms/home-manager/modules/nmasur/presets/programs/firefox.nix +++ b/platforms/home-manager/modules/nmasur/presets/programs/firefox.nix @@ -17,7 +17,7 @@ in config = lib.mkIf cfg.enable { - unfreePackages = [ + allowUnfreePackages = [ "okta-browser-plugin" ]; diff --git a/platforms/home-manager/modules/nmasur/presets/programs/terraform.nix b/platforms/home-manager/modules/nmasur/presets/programs/terraform.nix index b170851..b449217 100644 --- a/platforms/home-manager/modules/nmasur/presets/programs/terraform.nix +++ b/platforms/home-manager/modules/nmasur/presets/programs/terraform.nix @@ -15,7 +15,7 @@ in config = lib.mkIf cfg.enable { - unfreePackages = [ "terraform" ]; + allowUnfreePackages = [ "terraform" ]; programs.fish.shellAbbrs = { te = "terraform"; diff --git a/platforms/home-manager/modules/nmasur/profiles/work.nix b/platforms/home-manager/modules/nmasur/profiles/work.nix index b501579..ea3c5e2 100644 --- a/platforms/home-manager/modules/nmasur/profiles/work.nix +++ b/platforms/home-manager/modules/nmasur/profiles/work.nix @@ -15,7 +15,7 @@ in config = lib.mkIf cfg.enable { - unfreePackages = [ + allowUnfreePackages = [ "vault-bin" # "teams" ]; diff --git a/platforms/nix-darwin/modules/nmasur/profiles/base.nix b/platforms/nix-darwin/modules/nmasur/profiles/base.nix index 954043a..88e2589 100644 --- a/platforms/nix-darwin/modules/nmasur/profiles/base.nix +++ b/platforms/nix-darwin/modules/nmasur/profiles/base.nix @@ -32,5 +32,18 @@ in "/opt/homebrew/opt/trash/bin" ]; + # Include home-manager config in nix-darwin + home-manager = { + sharedModules = [ ../../../../home-manager ]; + + # Use the system-level nixpkgs instead of Home Manager's + useGlobalPkgs = lib.mkDefault true; + + # Install packages to /etc/profiles instead of ~/.nix-profile, useful when + # using multiple profiles for one user + useUserPackages = lib.mkDefault true; + + }; + }; } diff --git a/platforms/nixos/modules/nixpkgs.nix b/platforms/nixos/modules/nixpkgs.nix new file mode 100644 index 0000000..fda668d --- /dev/null +++ b/platforms/nixos/modules/nixpkgs.nix @@ -0,0 +1,29 @@ +{ config, lib, ... }: +{ + + options = { + allowUnfreePackages = lib.mkOption { + type = lib.types.listOf lib.types.str; + description = "List of unfree packages to allow."; + default = [ ]; + }; + allowInsecurePackages = lib.mkOption { + type = lib.types.listOf lib.types.str; + description = "List of insecure packages to allow."; + default = [ ]; + }; + }; + + config = { + + # Allow specified unfree packages (identified elsewhere) + # Retrieves package object based on string name + nixpkgs.config.allowUnfreePredicate = + pkg: builtins.elem (lib.getName pkg) config.allowUnfreePackages; + + # Allow specified insecure packages (identified elsewhere) + nixpkgs.config.permittedInsecurePackages = config.allowInsecurePackages; + + }; + +} diff --git a/platforms/nixos/modules/nmasur/presets/programs/dwarf-fortress.nix b/platforms/nixos/modules/nmasur/presets/programs/dwarf-fortress.nix index 92973a2..4159eb5 100644 --- a/platforms/nixos/modules/nmasur/presets/programs/dwarf-fortress.nix +++ b/platforms/nixos/modules/nmasur/presets/programs/dwarf-fortress.nix @@ -14,7 +14,7 @@ in options.nmasur.presets.programs.dwarf-fortress.enable = lib.mkEnableOption "Dwarf Fortress"; config = lib.mkIf cfg.enable { - unfreePackages = [ + allowUnfreePackages = [ "dwarf-fortress" "phoebus-theme" ]; diff --git a/platforms/nixos/modules/nmasur/presets/programs/steam.nix b/platforms/nixos/modules/nmasur/presets/programs/steam.nix index 3200d4a..4b21d25 100644 --- a/platforms/nixos/modules/nmasur/presets/programs/steam.nix +++ b/platforms/nixos/modules/nmasur/presets/programs/steam.nix @@ -15,7 +15,7 @@ in config = lib.mkIf cfg.enable { hardware.steam-hardware.enable = true; - unfreePackages = [ + allowUnfreePackages = [ "steam" "steam-original" "steamcmd" diff --git a/platforms/nixos/modules/nmasur/presets/services/arr.nix b/platforms/nixos/modules/nmasur/presets/services/arr.nix index 64f8832..cf77916 100644 --- a/platforms/nixos/modules/nmasur/presets/services/arr.nix +++ b/platforms/nixos/modules/nmasur/presets/services/arr.nix @@ -88,7 +88,7 @@ in # Allows shared group to read/write the sabnzbd directory users.users.sabnzbd.homeMode = "0770"; - unfreePackages = [ "unrar" ]; # Required as a dependency for sabnzbd + allowUnfreePackages = [ "unrar" ]; # Required as a dependency for sabnzbd # Requires updating the base_url config value in each service # If you try to rewrite the URL, the service won't redirect properly diff --git a/platforms/nixos/modules/nmasur/presets/services/minecraft-server.nix b/platforms/nixos/modules/nmasur/presets/services/minecraft-server.nix index c7e50e4..334b33d 100644 --- a/platforms/nixos/modules/nmasur/presets/services/minecraft-server.nix +++ b/platforms/nixos/modules/nmasur/presets/services/minecraft-server.nix @@ -20,7 +20,7 @@ in config = lib.mkIf cfg.enable { - unfreePackages = [ "minecraft-server" ]; + allowUnfreePackages = [ "minecraft-server" ]; services.minecraft-server = { eula = true; diff --git a/platforms/nixos/modules/nmasur/presets/services/n8n.nix b/platforms/nixos/modules/nmasur/presets/services/n8n.nix index 705f298..8431c73 100644 --- a/platforms/nixos/modules/nmasur/presets/services/n8n.nix +++ b/platforms/nixos/modules/nmasur/presets/services/n8n.nix @@ -14,7 +14,7 @@ in config = lib.mkIf cfg.enable { - unfreePackages = [ "n8n" ]; + allowUnfreePackages = [ "n8n" ]; services.n8n = { webhookUrl = "https://${hostnames.n8n}"; diff --git a/templates/default.nix b/templates/default.nix new file mode 100644 index 0000000..4a4abeb --- /dev/null +++ b/templates/default.nix @@ -0,0 +1,19 @@ +# Return a list of all templates + +{ lib, ... }: + +lib.pipe (lib.filesystem.listFilesRecursive ./.) [ + # Get only files ending in default.nix + (builtins.filter (name: lib.hasSuffix "flake.nix" name)) + # Import each template function + map + (file: rec { + name = builtins.baseNameOf (builtins.dirOf file); + value = { + path = builtins.dirOf file; + description = "${name} template"; + }; + }) + # Convert to an attrset of template name -> template path and description + (builtins.listToAttrs) +]