From 013b1c4d3eb74c6759e312286803f93a8e7fcf1a Mon Sep 17 00:00:00 2001 From: Gene Liverman Date: Mon, 10 Jun 2024 15:08:41 -0400 Subject: [PATCH] Add puppet-editor-services --- flake.nix | 17 +- modules/home-manager/common/all-cli.nix | 1 + modules/overlays/default.nix | 4 + modules/pkgs/default.nix | 3 + modules/pkgs/puppet-editor-services/Gemfile | 55 ++ .../pkgs/puppet-editor-services/Gemfile.lock | 148 +++++ .../pkgs/puppet-editor-services/default.nix | 46 ++ .../pkgs/puppet-editor-services/gemset.nix | 596 ++++++++++++++++++ 8 files changed, 867 insertions(+), 3 deletions(-) create mode 100644 modules/overlays/default.nix create mode 100644 modules/pkgs/default.nix create mode 100644 modules/pkgs/puppet-editor-services/Gemfile create mode 100644 modules/pkgs/puppet-editor-services/Gemfile.lock create mode 100644 modules/pkgs/puppet-editor-services/default.nix create mode 100644 modules/pkgs/puppet-editor-services/gemset.nix diff --git a/flake.nix b/flake.nix index 9776b92..caf98cc 100644 --- a/flake.nix +++ b/flake.nix @@ -60,6 +60,8 @@ self, nixpkgs, nixpkgs-unstable, compose2nix, disko, genebean-omp-themes, home-manager, nix-darwin, nix-flatpak, nix-homebrew, nixos-hardware, nixpkgs-terraform, sops-nix, ... }: let + local_overlays = import ./modules/overlays { }; + # creates a macOS system config darwinHostConfig = { system, hostname, username, additionalModules, additionalSpecialArgs }: nix-darwin.lib.darwinSystem { pkgs = import nixpkgs { @@ -68,7 +70,10 @@ allowUnfree = true; permittedInsecurePackages = [ "python-2.7.18.7" ]; }; - overlays = [ nixpkgs-terraform.overlays.default ]; + overlays = [ + local_overlays.local_pkgs + nixpkgs-terraform.overlays.default + ]; }; specialArgs = { inherit inputs hostname username; } // additionalSpecialArgs; modules = [ @@ -106,7 +111,10 @@ allowUnfree = true; permittedInsecurePackages = [ "electron-21.4.4" ]; }; - overlays = [ nixpkgs-terraform.overlays.default ]; + overlays = [ + local_overlays.local_pkgs + nixpkgs-terraform.overlays.default + ]; }; } // additionalSpecialArgs; modules = [ @@ -139,7 +147,10 @@ allowUnfree = true; permittedInsecurePackages = [ "electron-21.4.4" ]; }; - overlays = [ nixpkgs-terraform.overlays.default ]; + overlays = [ + local_overlays.local_pkgs + nixpkgs-terraform.overlays.default + ]; }; } // additionalSpecialArgs; modules = [ diff --git a/modules/home-manager/common/all-cli.nix b/modules/home-manager/common/all-cli.nix index 4a7380a..df4b3f5 100644 --- a/modules/home-manager/common/all-cli.nix +++ b/modules/home-manager/common/all-cli.nix @@ -38,6 +38,7 @@ in { nvd onefetch powershell + puppet-editor-services puppet-lint rename ruby diff --git a/modules/overlays/default.nix b/modules/overlays/default.nix new file mode 100644 index 0000000..6521cd2 --- /dev/null +++ b/modules/overlays/default.nix @@ -0,0 +1,4 @@ +{ ... }: { + # This one brings our custom packages from the 'pkgs' directory + local_pkgs = final: _prev: import ../pkgs { pkgs = final; config.allowUnfree = true; }; +} \ No newline at end of file diff --git a/modules/pkgs/default.nix b/modules/pkgs/default.nix new file mode 100644 index 0000000..272b3aa --- /dev/null +++ b/modules/pkgs/default.nix @@ -0,0 +1,3 @@ +{ pkgs, ... }: { + puppet-editor-services = pkgs.callPackage ./puppet-editor-services { }; +} \ No newline at end of file diff --git a/modules/pkgs/puppet-editor-services/Gemfile b/modules/pkgs/puppet-editor-services/Gemfile new file mode 100644 index 0000000..9968834 --- /dev/null +++ b/modules/pkgs/puppet-editor-services/Gemfile @@ -0,0 +1,55 @@ +source ENV['GEM_SOURCE'] || "https://rubygems.org" + +# -=-=-=-=-=- WARNING -=-=-=-=-=- +# There should be NO runtime gem dependencies here. In production this code will be running using the Ruby +# runtime provided by Puppet. That means no native extensions and NO BUNDLER. All runtime dependences should +# be re-vendored and then the load path modified appropriately. +# +# This gemfile only exists to help when developing the language server and running tests +# -=-=-=-=-=- WARNING -=-=-=-=-=- + +group :development do + gem 'rake', '>= 10.4', :require => false + gem 'rspec', '>= 3.2', :require => false + gem 'puppet-lint', '~> 4.0', :require => false + gem 'puppetfile-resolver', '~> 0.6.2', :require => false + gem 'yard', '~> 0.9.28', :require => false + gem "rubocop", '~> 1.50.0', :require => false + gem "rubocop-performance", '~> 1.16', :require => false + gem "rubocop-rspec", '~> 2.19', :require => false + gem 'rubocop-factory_bot', '!= 2.26.0', require: false + gem 'rubocop-rspec_rails', '!= 2.29.0', require: false + gem 'simplecov', :require => false + gem 'simplecov-console', :require => false + + if ENV['PUPPET_GEM_VERSION'] + gem 'puppet', ENV['PUPPET_GEM_VERSION'], :require => false + else + gem 'puppet', :require => false + end + + case RUBY_PLATFORM + when /darwin/ + gem 'CFPropertyList' + end + + gem "win32-dir", "<= 0.4.9", :require => false, :platforms => ["mswin", "mingw", "x64_mingw"] + gem "win32-eventlog", "<= 0.6.5", :require => false, :platforms => ["mswin", "mingw", "x64_mingw"] + gem "win32-process", "<= 0.7.5", :require => false, :platforms => ["mswin", "mingw", "x64_mingw"] + gem "win32-security", "<= 0.2.5", :require => false, :platforms => ["mswin", "mingw", "x64_mingw"] + gem "win32-service", "<= 0.8.8", :require => false, :platforms => ["mswin", "mingw", "x64_mingw"] + + # Gems for building release tarballs etc. + gem "archive-zip", :require => false + gem "minitar" , :require => false +end + +# Evaluate Gemfile.local if it exists +if File.exist? "#{__FILE__}.local" + eval(File.read("#{__FILE__}.local"), binding) +end + +# Evaluate ~/.gemfile if it exists +if File.exist?(File.join(Dir.home, '.gemfile')) + eval(File.read(File.join(Dir.home, '.gemfile')), binding) +end diff --git a/modules/pkgs/puppet-editor-services/Gemfile.lock b/modules/pkgs/puppet-editor-services/Gemfile.lock new file mode 100644 index 0000000..b762a16 --- /dev/null +++ b/modules/pkgs/puppet-editor-services/Gemfile.lock @@ -0,0 +1,148 @@ +GEM + remote: https://rubygems.org/ + specs: + CFPropertyList (3.0.7) + base64 + nkf + rexml + ansi (1.5.0) + archive-zip (0.12.0) + io-like (~> 0.3.0) + ast (2.4.2) + base64 (0.2.0) + concurrent-ruby (1.3.3) + deep_merge (1.2.2) + diff-lcs (1.5.1) + docile (1.4.0) + facter (4.7.0) + hocon (~> 1.3) + thor (>= 1.0.1, < 1.3) + fast_gettext (2.4.0) + prime + forwardable (1.3.3) + hocon (1.4.0) + io-like (0.3.1) + json (2.7.2) + locale (2.1.4) + minitar (0.9) + molinillo (0.8.0) + multi_json (1.15.0) + nkf (0.2.0) + parallel (1.25.1) + parser (3.3.2.0) + ast (~> 2.4.1) + racc + prime (0.1.2) + forwardable + singleton + puppet (8.6.0) + concurrent-ruby (~> 1.0) + deep_merge (~> 1.0) + facter (>= 4.3.0, < 5) + fast_gettext (>= 2.1, < 3) + locale (~> 2.1) + multi_json (~> 1.13) + puppet-resource_api (~> 1.5) + scanf (~> 1.0) + semantic_puppet (~> 1.0) + puppet-lint (4.2.4) + puppet-resource_api (1.9.0) + hocon (>= 1.0) + puppetfile-resolver (0.6.3) + molinillo (~> 0.6) + semantic_puppet (~> 1.0) + racc (1.8.0) + rainbow (3.1.1) + rake (13.2.1) + regexp_parser (2.9.2) + rexml (3.2.9) + strscan + rspec (3.13.0) + rspec-core (~> 3.13.0) + rspec-expectations (~> 3.13.0) + rspec-mocks (~> 3.13.0) + rspec-core (3.13.0) + rspec-support (~> 3.13.0) + rspec-expectations (3.13.0) + diff-lcs (>= 1.2.0, < 2.0) + rspec-support (~> 3.13.0) + rspec-mocks (3.13.1) + diff-lcs (>= 1.2.0, < 2.0) + rspec-support (~> 3.13.0) + rspec-support (3.13.1) + rubocop (1.50.2) + json (~> 2.3) + parallel (~> 1.10) + parser (>= 3.2.0.0) + rainbow (>= 2.2.2, < 4.0) + regexp_parser (>= 1.8, < 3.0) + rexml (>= 3.2.5, < 4.0) + rubocop-ast (>= 1.28.0, < 2.0) + ruby-progressbar (~> 1.7) + unicode-display_width (>= 2.4.0, < 3.0) + rubocop-ast (1.31.3) + parser (>= 3.3.1.0) + rubocop-capybara (2.21.0) + rubocop (~> 1.41) + rubocop-factory_bot (2.25.1) + rubocop (~> 1.41) + rubocop-performance (1.21.0) + rubocop (>= 1.48.1, < 2.0) + rubocop-ast (>= 1.31.1, < 2.0) + rubocop-rspec (2.31.0) + rubocop (~> 1.40) + rubocop-capybara (~> 2.17) + rubocop-factory_bot (~> 2.22) + rubocop-rspec_rails (~> 2.28) + rubocop-rspec_rails (2.28.3) + rubocop (~> 1.40) + ruby-progressbar (1.13.0) + scanf (1.0.0) + semantic_puppet (1.1.0) + simplecov (0.22.0) + docile (~> 1.1) + simplecov-html (~> 0.11) + simplecov_json_formatter (~> 0.1) + simplecov-console (0.9.1) + ansi + simplecov + terminal-table + simplecov-html (0.12.3) + simplecov_json_formatter (0.1.4) + singleton (0.2.0) + strscan (3.1.0) + terminal-table (3.0.2) + unicode-display_width (>= 1.1.1, < 3) + thor (1.2.2) + unicode-display_width (2.5.0) + yard (0.9.36) + +PLATFORMS + arm64-darwin-23 + ruby + +DEPENDENCIES + CFPropertyList + archive-zip + minitar + puppet + puppet-lint (~> 4.0) + puppetfile-resolver (~> 0.6.2) + rake (>= 10.4) + rspec (>= 3.2) + rubocop (~> 1.50.0) + rubocop-factory_bot (!= 2.26.0) + rubocop-performance (~> 1.16) + rubocop-rspec (~> 2.19) + rubocop-rspec_rails (!= 2.29.0) + simplecov + simplecov-console + win32-dir (<= 0.4.9) + win32-eventlog (<= 0.6.5) + win32-process (<= 0.7.5) + win32-security (<= 0.2.5) + win32-service (<= 0.8.8) + yard (~> 0.9.28) + +BUNDLED WITH + 2.5.9 diff --git a/modules/pkgs/puppet-editor-services/default.nix b/modules/pkgs/puppet-editor-services/default.nix new file mode 100644 index 0000000..08ffebb --- /dev/null +++ b/modules/pkgs/puppet-editor-services/default.nix @@ -0,0 +1,46 @@ +{ stdenv, bundlerEnv, fetchFromGitHub, ruby }: +let + # the magic which will include gemset.nix + gems = bundlerEnv { + name = "puppet-editor-services-env"; + inherit ruby; + gemdir = ./.; + }; +in stdenv.mkDerivation { + name = "puppet-editor-services"; + src = fetchFromGitHub { + owner = "puppetlabs"; + repo = "puppet-editor-services"; + rev = "v2.0.4"; + hash = "sha256-bSLOtoOot118YaqF/23unMsOIQq+BdGsZa3JMg1k3Tk="; + }; + buildInputs = [gems ruby]; + installPhase = '' + mkdir -p $out/{bin,share/puppet-editor-services} + cp -r * $out/share/puppet-editor-services + + debugserver=$out/bin/puppet-debugserver +# we are using bundle exec to start in the bundled environment + cat > $debugserver < $languageserver < $sidecar <