diff --git a/container/adsb/config.nix b/container/adsb/config.nix new file mode 100644 index 0000000..569d2ce --- /dev/null +++ b/container/adsb/config.nix @@ -0,0 +1,11 @@ +{ + systemd.tmpfiles.rules = [ + "d /etc/container-adsb 0755 root root" + + "d /etc/container-adsb/readsb 0755 1000 1000" + "d /etc/container-adsb/readsb/autogain 0755 1000 1000" + + "d /etc/container-adsb/tar1090 0755 1000 1000" + "d /etc/container-adsb/tar1090/heatmap 0755 1000 1000" + ]; +} diff --git a/container/adsb/default.nix b/container/adsb/default.nix new file mode 100644 index 0000000..3aba1d3 --- /dev/null +++ b/container/adsb/default.nix @@ -0,0 +1,147 @@ +let + secret = import ../../secret/container/adsb; + custom-config = import ./config.nix; +in +{ + virtualisation.arion.projects.adsb.settings = { + services = { + readsb = { + service = { + image = "ghcr.io/sdr-enthusiasts/docker-readsb-protobuf:latest"; + container_name = "readsb"; + hostname = "readsb"; + restart = "always"; + environment = { + "TZ" = "Europe/Berlin"; + "DISABLE_PERFORMANCE_GRAPHS" = "true"; + "DISABLE_WEBAPP" = "true"; + "READSB_NET_ENABLE" = "true"; + "READSB_DCFILTER" = "true"; + "READSB_FIX" = "true"; + "READSB_GAIN" = "autogain"; + "READSB_LAT" = secret.container.adsb.readsb.lat; + "READSB_LON" = secret.container.adsb.readsb.lon; + "READSB_MODEAC" = "true"; + "READSB_RX_LOCATION_ACCURACY" = "2"; + }; + devices = [ "/dev/bus/usb:/dev/bus/usb" ]; + volumes = [ + "/etc/container-adsb/readsb/autogain:/run/autogain" + ]; + }; + }; + + mlathub = { + service = { + image = "ghcr.io/sdr-enthusiasts/docker-readsb-protobuf:latest"; + container_name = "mlathub"; + hostname = "mlathub"; + restart = "always"; + depends_on = [ "readsb" "piaware" "adsbexchange" ]; + environment = { + "TZ" = "Europe/Berlin"; + "DISABLE_PERFORMANCE_GRAPHS" = "true"; + "DISABLE_WEBAPP" = "true"; + "READSB_NET_ENABLE" = "true"; + "READSB_NET_ONLY" = "true"; + "READSB_FORWARD_MLAT" = "true"; + "READSB_NET_CONNECTOR" = "piaware,30105,beast_in;adsbexchange,30105,beast_in"; + "READSB_NET_BEAST_OUTPUT_PORT" = "30105"; + }; + }; + }; + + tar1090 = { + service = { + image = "ghcr.io/sdr-enthusiasts/docker-tar1090:latest"; + container_name = "tar1090"; + restart = "always"; + depends_on = [ "readsb" "mlathub" ]; + ports = [ "8081:80" ]; + environment = { + "TZ" = "Europe/Berlin"; + "BEASTHOST" = "readsb"; + "BEASTPORT" = "30005"; + "MLATHOST" = "mlathub"; + "MLATPORT" = "30105"; + "LAT" = secret.container.adsb.readsb.lat; + "LONG" = secret.container.adsb.readsb.lon; + "HEYWHATSTHAT_PANORAMA_ID" = secret.container.adsb.tar1090.heywhatsthat-id; + "TAR1090_FLIGHTAWARELINKS" = "true"; + "TAR1090_DISPLAYUNITS" = "metric"; + }; + volumes = [ + "/etc/container-adsb/tar1090/heatmap:/var/globe_history" + ]; + tmpfs = [ + "/run:exec,size=64M" + "/var/log" + ]; + }; + }; + + adsbexchange = { + service = { + image = "ghcr.io/sdr-enthusiasts/docker-adsbexchange:latest"; + container_name = "adsbexchange"; + restart = "always"; + depends_on = [ "readsb" ]; + environment = { + "TZ" = "Europe/Berlin"; + "BEASTHOST" = "readsb"; + "BEASTPORT" = "30005"; + "LAT" = secret.container.adsb.readsb.lat; + "LONG" = secret.container.adsb.readsb.lon; + "ALT" = "70m"; + "SITENAME" = secret.container.adsb.adsbexchange.sitename; + "PRIVATE_MLAT" = true; + "UUID" = secret.container.adsb.adsbexchange.uuid; + }; + tmpfs = [ + "/run:rw,nosuid,nodev,exec,relatime,size=64M,uid=1000,gid=1000" + ]; + }; + }; + + fr24feed = { + service = { + image = "ghcr.io/sdr-enthusiasts/docker-flightradar24:latest"; + container_name = "fr24feed"; + restart = "always"; + depends_on = [ "readsb" ]; + environment = { + "TZ" = "Europe/Berlin"; + "BEASTHOST" = "readsb"; + "BEASTPORT" = "30005"; + "MLAT" = "yes"; + "FR24KEY" = secret.container.adsb.fr24feed.key; + }; + }; + }; + + piaware = { + service = { + image = "ghcr.io/sdr-enthusiasts/docker-piaware:latest"; + container_name = "piaware"; + restart = "always"; + depends_on = [ "readsb" ]; + environment = { + "TZ" = "Europe/Berlin"; + "RECEIVER_TYPE" = "relay"; + "BEASTHOST" = "readsb"; + "BEASTPORT" = "30005"; + "ALLOW_MLAT" = "yes"; + "MLAT_RESULTS" = "yes"; + "LAT" = secret.container.adsb.readsb.lat; + "LONG" = secret.container.adsb.readsb.lon; + "FEEDER_ID" = secret.container.adsb.piaware.feeder-id; + }; + tmpfs = [ + "/run:exec,size=64M" + "/var/log" + ]; + }; + }; + }; + }; +} // custom-config diff --git a/flake.lock b/flake.lock index fcac584..b5690f6 100644 --- a/flake.lock +++ b/flake.lock @@ -94,11 +94,11 @@ "utils": "utils" }, "locked": { - "lastModified": 1659371922, - "narHash": "sha256-lzHe7LN7reblaonfkemzfmB0aRZDt7QJ/Vbp7iyghnU=", + "lastModified": 1659398318, + "narHash": "sha256-5wovS14I/DNXwfiMP402Ut2kxI58CO1wD943fboWMDw=", "owner": "nix-community", "repo": "home-manager", - "rev": "d1c677ac257affed8d026f418b81ed5de2c8d963", + "rev": "77648a07e459adff69b2c4033a77b2cababb5843", "type": "github" }, "original": { @@ -117,11 +117,11 @@ }, "locked": { "dir": "contrib", - "lastModified": 1659309744, - "narHash": "sha256-HMPYMhcqJ8W/RwJmpmIenSMwyQXZTdJHTBlZYiohPNI=", + "lastModified": 1659410002, + "narHash": "sha256-hn8+oiCYAUovI7gXZsn83TW1KZCduNbnwQ9j9NqGnHI=", "owner": "neovim", "repo": "neovim", - "rev": "8952def50afa8308e044c0100e6d4fa367d0a9c2", + "rev": "0a049c322fda5f2bb124429086c2713ff99c7142", "type": "github" }, "original": { @@ -140,11 +140,11 @@ ] }, "locked": { - "lastModified": 1659341861, - "narHash": "sha256-bSjp4/Z3ujV8ABqMKbMGJ35b2OwG3mpmsdgPoLWh6Bc=", + "lastModified": 1659428241, + "narHash": "sha256-A8BJ7c5+aT8P8FHPUuw4tvVbCvXZ7LK/2ULhDLuRr4w=", "owner": "nix-community", "repo": "neovim-nightly-overlay", - "rev": "0e17ee068e94dd888b41791a910ff1d96dfa6296", + "rev": "3856a60edcbe1184f270be6dd056a1225efc2719", "type": "github" }, "original": { @@ -175,11 +175,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1659254610, - "narHash": "sha256-ee5W5MLWZ3kdx5hwOUs6trOJit+GeTDfG+Lg3rANKoc=", + "lastModified": 1659375087, + "narHash": "sha256-6KeFtLofaF6J3R1W+FkqPcYB0i1pCKl0QB8DTBE8toA=", "owner": "nixos", "repo": "nixpkgs", - "rev": "67f49b2a3854e8b5e3f9df4422225daa0985f451", + "rev": "07c6ff07ce85fde644679aa36560ee67404b2804", "type": "github" }, "original": { diff --git a/home/programs/nvim/plugins.nix b/home/programs/nvim/plugins.nix index d7c9a6b..c6a3f5c 100644 --- a/home/programs/nvim/plugins.nix +++ b/home/programs/nvim/plugins.nix @@ -80,12 +80,12 @@ }; leap-nvim = pkgs.vimUtils.buildVimPluginFrom2Nix { pname = "leap.nvim"; - version = "2022-08-01"; + version = "2022-08-02"; src = pkgs.fetchFromGitHub { owner = "ggandor"; repo = "leap.nvim"; - rev = "c7d8bd452e9724b64a4b170151e6ee45eaa55b70"; - sha256 = "1ghxd2ayi8qnq3wpfdy2nkwyfszjas5is401xif7afysjfmwg9wg"; + rev = "a9949044bc59b0ae026c2e8394da826069049211"; + sha256 = "1r23f49ln6mb3gmhqgswr8q6zk3h9lih6ajv3h631chg1xp6kyn1"; fetchSubmodules = false; }; }; @@ -201,8 +201,8 @@ src = pkgs.fetchFromGitHub { owner = "neovim"; repo = "nvim-lspconfig"; - rev = "79f381b647b9a0b89639e1cb8debcb1ef5478377"; - sha256 = "0anyyvmmd5360mgajk9z7iwhb3n050k90v6harryd4bly1i9k5kx"; + rev = "06744ba3783ce2d502838f988dec95378543f5d7"; + sha256 = "1hlwxm97wri9w40m1d90j9spzs29mi5xjr7iw86dvhhs2pa8xln4"; fetchSubmodules = false; }; }; @@ -241,12 +241,12 @@ }; comment-nvim = pkgs.vimUtils.buildVimPluginFrom2Nix { pname = "comment.nvim"; - version = "2022-08-01"; + version = "2022-08-02"; src = pkgs.fetchFromGitHub { owner = "numtostr"; repo = "comment.nvim"; - rev = "006724e38c244c3128b2840ea40bd61dd6c419f0"; - sha256 = "1aq8k68hfvqiawgk7pgvqh7c4f86c86zw7z634wmsrjvl1cckv22"; + rev = "1855716bd9d0f71b03d447dc75df5060575d1367"; + sha256 = "02gccf82ix2ksv45dpnkvkzqwcikp7pnfy9s8kfdk0j8qfh36nin"; fetchSubmodules = false; }; }; @@ -494,12 +494,12 @@ }; toggleterm-nvim = pkgs.vimUtils.buildVimPluginFrom2Nix { pname = "toggleterm.nvim"; - version = "2022-07-28"; + version = "2022-08-02"; src = pkgs.fetchFromGitHub { owner = "akinsho"; repo = "toggleterm.nvim"; - rev = "a7c9a6fd135f96639e2ac686691a32db6d011471"; - sha256 = "03avxz9l9kz3c99dqjk63zw5wi1s0vakas9wx8l74sqrr9b8pba0"; + rev = "5ea823359b450bcf9a784f73734fd2d52e9de0ec"; + sha256 = "1ca9mm31w4a3kfz0a9zz62x13npafc5bzps6mfshkjgdav3qwqwf"; fetchSubmodules = false; }; }; @@ -560,12 +560,12 @@ }; nvim-notify = pkgs.vimUtils.buildVimPluginFrom2Nix { pname = "nvim-notify"; - version = "2022-07-21"; + version = "2022-08-02"; src = pkgs.fetchFromGitHub { owner = "rcarriga"; repo = "nvim-notify"; - rev = "cd2a59f16d3dc8c54dabc58c31c9c539fcef3c2b"; - sha256 = "14mfvlp44qn3jb4fnicay3cxy0vya5jix41hnvfz1j3bi2c0zng1"; + rev = "60bb6bfd6992549ee5336bbb761705b62797ce1d"; + sha256 = "06wyk09y3yykp4njxqxl211v508xw4qm4q987gz609xdd5n8x15d"; fetchSubmodules = false; }; }; diff --git a/secret/container/adsb/default.nix b/secret/container/adsb/default.nix new file mode 100644 index 0000000..99bb50e Binary files /dev/null and b/secret/container/adsb/default.nix differ diff --git a/system/hosts/adsb-antenna.nix b/system/hosts/adsb-antenna.nix index 489ba9f..cf0eeb3 100644 --- a/system/hosts/adsb-antenna.nix +++ b/system/hosts/adsb-antenna.nix @@ -10,6 +10,9 @@ in ../nixos/ssh.nix ../nixos/git.nix + + ../nixos/arion.nix + ../../container/adsb ]; nix = {