Various updates

This commit is contained in:
Johannes Jöns 2023-12-17 15:25:49 +01:00
parent a35bbf44ad
commit f0e2bec7af
7 changed files with 296 additions and 190 deletions

View file

@ -185,11 +185,11 @@
]
},
"locked": {
"lastModified": 1698882062,
"narHash": "sha256-HkhafUayIqxXyHH1X8d9RDl1M2CkFgZLjKD3MzabiEo=",
"lastModified": 1701473968,
"narHash": "sha256-YcVE5emp1qQ8ieHUnxt1wCZCC3ZfAS+SRRWZ2TMda7E=",
"owner": "hercules-ci",
"repo": "flake-parts",
"rev": "8c9fa2545007b49a5db5f650ae91f227672c3877",
"rev": "34fed993f1674c8d06d58b37ce1e0fe5eebcb9f5",
"type": "github"
},
"original": {
@ -220,11 +220,11 @@
]
},
"locked": {
"lastModified": 1694529238,
"narHash": "sha256-zsNZZGTGnMOf9YpHKJqMSsa0dXbfmxeoJ7xHlrt+xmY=",
"lastModified": 1701680307,
"narHash": "sha256-kAuep2h5ajznlPMD9rnQyffWG8EM/C73lejGofXvdM8=",
"owner": "numtide",
"repo": "flake-utils",
"rev": "ff7b65b44d01cf9ba6a71320833626af21126384",
"rev": "4022d587cbbfd70fe950c1e2083a02621806a725",
"type": "github"
},
"original": {
@ -238,11 +238,11 @@
"systems": "systems"
},
"locked": {
"lastModified": 1694529238,
"narHash": "sha256-zsNZZGTGnMOf9YpHKJqMSsa0dXbfmxeoJ7xHlrt+xmY=",
"lastModified": 1701680307,
"narHash": "sha256-kAuep2h5ajznlPMD9rnQyffWG8EM/C73lejGofXvdM8=",
"owner": "numtide",
"repo": "flake-utils",
"rev": "ff7b65b44d01cf9ba6a71320833626af21126384",
"rev": "4022d587cbbfd70fe950c1e2083a02621806a725",
"type": "github"
},
"original": {
@ -316,11 +316,11 @@
]
},
"locked": {
"lastModified": 1701071203,
"narHash": "sha256-lQywA7QU/vzTdZ1apI0PfgCWNyQobXUYghVrR5zuIeM=",
"lastModified": 1702814335,
"narHash": "sha256-Qck7BAMi3eydzT1WFOzp/SgECetyPpOn1dLgmxH2ebQ=",
"owner": "nix-community",
"repo": "home-manager",
"rev": "db1878f013b52ba5e4034db7c1b63e8d04173a86",
"rev": "e4dba0bd01956170667458be7b45f68170a63651",
"type": "github"
},
"original": {
@ -336,11 +336,11 @@
"pre-commit-hooks": "pre-commit-hooks"
},
"locked": {
"lastModified": 1701378044,
"narHash": "sha256-pC/dDE/Ks2auNLdJaujaitD4HCs1Nkexep1+1K/MZd8=",
"lastModified": 1702626673,
"narHash": "sha256-+LQZd7Cy6LJiasTLl2Mt4PFS4I4dqv0b6lfeMOSHUTs=",
"owner": "nix-community",
"repo": "kde2nix",
"rev": "018259bd4e5cf234c394c49ab6af5b2c273bd4fb",
"rev": "f0fb2b97ea101320ba5d6d46d6fa0eb356d589e2",
"type": "github"
},
"original": {
@ -382,11 +382,11 @@
},
"nix-filter": {
"locked": {
"lastModified": 1694857738,
"narHash": "sha256-bxxNyLHjhu0N8T3REINXQ2ZkJco0ABFPn6PIe2QUfqo=",
"lastModified": 1701697642,
"narHash": "sha256-L217WytWZHSY8GW9Gx1A64OnNctbuDbfslaTEofXXRw=",
"owner": "numtide",
"repo": "nix-filter",
"rev": "41fd48e00c22b4ced525af521ead8792402de0ea",
"rev": "c843418ecfd0344ecb85844b082ff5675e02c443",
"type": "github"
},
"original": {
@ -427,11 +427,11 @@
},
"nixos-hardware": {
"locked": {
"lastModified": 1701250978,
"narHash": "sha256-ohu3cz4edjpGxs2qUTgbs0WrnewOX4crnUJNEB6Jox4=",
"lastModified": 1702453208,
"narHash": "sha256-0wRi9SposfE2wHqjuKt8WO2izKB/ASDOV91URunIqgo=",
"owner": "NixOS",
"repo": "nixos-hardware",
"rev": "8772491ed75f150f02552c60694e1beff9f46013",
"rev": "7763c6fd1f299cb9361ff2abf755ed9619ef01d6",
"type": "github"
},
"original": {
@ -442,11 +442,11 @@
},
"nixpkgs": {
"locked": {
"lastModified": 1701322982,
"narHash": "sha256-qb7ZcYpMBzgmnj6AeGSaS2B1JZGaSGFlB7DJo/yszAA=",
"lastModified": 1702319469,
"narHash": "sha256-vxXgbGOmGLr5JUbFZUM/TVYYn/quMTqfFJrx5EXyhbk=",
"owner": "K900",
"repo": "nixpkgs",
"rev": "8f3411ef0ce2fc8957fccd2ea4ad5b9b2dfb7bef",
"rev": "80878a189a3a7dd9c7253370e2771596936b8a74",
"type": "github"
},
"original": {
@ -459,11 +459,11 @@
"nixpkgs-lib": {
"locked": {
"dir": "lib",
"lastModified": 1701068326,
"narHash": "sha256-vmMceA+q6hG1yrjb+MP8T0YFDQIrW3bl45e7z24IEts=",
"lastModified": 1702312524,
"narHash": "sha256-gkZJRDBUCpTPBvQk25G0B7vfbpEYM5s5OZqghkjZsnE=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "8cfef6986adfb599ba379ae53c9f5631ecd2fd9c",
"rev": "a9bf124c46ef298113270b1f84a164865987a91c",
"type": "github"
},
"original": {
@ -492,27 +492,26 @@
},
"nixpkgs_2": {
"locked": {
"lastModified": 1701068326,
"narHash": "sha256-vmMceA+q6hG1yrjb+MP8T0YFDQIrW3bl45e7z24IEts=",
"lastModified": 1702821646,
"narHash": "sha256-aPvMdOIMSgdHfniGQ4MHoUIfzlir0Soc3SL/Eeapnm4=",
"owner": "nixos",
"repo": "nixpkgs",
"rev": "8cfef6986adfb599ba379ae53c9f5631ecd2fd9c",
"rev": "add1bb9ee30a7f77df0ec5df21237d9711c20771",
"type": "github"
},
"original": {
"owner": "nixos",
"ref": "nixos-unstable",
"repo": "nixpkgs",
"type": "github"
}
},
"nur": {
"locked": {
"lastModified": 1701374693,
"narHash": "sha256-9tnJvqVIxEMbMlDHhsPLvx+9YjxGz/wIj2Rb1zYlLcM=",
"lastModified": 1702820084,
"narHash": "sha256-Y8z31CWQB8hKRDiovx40s9AAOixrG9PBlfgPntjWVBc=",
"owner": "nix-community",
"repo": "NUR",
"rev": "06557d484099afc6dc70413d5faf63a792220d4c",
"rev": "0f3c510de06615a8cf9a2ad3b77758bb9d155753",
"type": "github"
},
"original": {
@ -536,11 +535,11 @@
"nixpkgs-stable": "nixpkgs-stable"
},
"locked": {
"lastModified": 1700922917,
"narHash": "sha256-ej2fch/T584b5K9sk1UhmZF7W6wEfDHuoUYpFN8dtvM=",
"lastModified": 1702290759,
"narHash": "sha256-DUPtcei6GJlrC05Y3cqwLLSst+sp07334aAZw4Uk118=",
"owner": "cachix",
"repo": "pre-commit-hooks.nix",
"rev": "e5ee5c5f3844550c01d2131096c7271cec5e9b78",
"rev": "f99ed8523fc3aef67a7c838ca31f4b94ef902837",
"type": "github"
},
"original": {
@ -568,11 +567,11 @@
]
},
"locked": {
"lastModified": 1700922917,
"narHash": "sha256-ej2fch/T584b5K9sk1UhmZF7W6wEfDHuoUYpFN8dtvM=",
"lastModified": 1702456155,
"narHash": "sha256-I2XhXGAecdGlqi6hPWYT83AQtMgL+aa3ulA85RAEgOk=",
"owner": "cachix",
"repo": "pre-commit-hooks.nix",
"rev": "e5ee5c5f3844550c01d2131096c7271cec5e9b78",
"rev": "007a45d064c1c32d04e1b8a0de5ef00984c419bc",
"type": "github"
},
"original": {
@ -615,11 +614,11 @@
]
},
"locked": {
"lastModified": 1701205043,
"narHash": "sha256-jE5apwml6mpKr81k8mIlVRUSYrtsZjVvK0dcIDjP1nw=",
"lastModified": 1702804755,
"narHash": "sha256-7pKog1X3uPMgWL0MT6vO5q/CWWCXfCpjQ/hmL0GW6/s=",
"owner": "PrismLauncher",
"repo": "PrismLauncher",
"rev": "4c59a1ba1b06d9d8e92dfc495bcf89a9b002f35e",
"rev": "2993306226a938b9d28e1e5561542361261abf4d",
"type": "github"
},
"original": {
@ -679,11 +678,11 @@
]
},
"locked": {
"lastModified": 1700923005,
"narHash": "sha256-j1Isg4ln4bfgSGuETvYPzEdEIRc/tBPpLqXa+bfvBf0=",
"lastModified": 1702559747,
"narHash": "sha256-d6AmQp3M00WMPJquNfGVzIol5iojD1pi9slek+4N9VY=",
"owner": "danth",
"repo": "stylix",
"rev": "8b3f61727f3b86c27096c3c014ae602aa40670ba",
"rev": "41d218597590a89324a4b7c50cf0bf088a7214ba",
"type": "github"
},
"original": {
@ -710,11 +709,11 @@
"tela-icon-theme": {
"flake": false,
"locked": {
"lastModified": 1700034057,
"narHash": "sha256-Svd9ICgcszXq4YqhlOqw2gFDO1Mbai5OudtoKzFJ33w=",
"lastModified": 1702743716,
"narHash": "sha256-Ec8AjgDkpsqa8ZcXIT4235N1FJHlCX8+XwtBQ70uxHI=",
"owner": "vinceliuice",
"repo": "Tela-icon-theme",
"rev": "79d37777e40474dc22f0c06a531ceb1078a3c841",
"rev": "6b1c74d9aa7b26e188a65757a9df1fb1f4a3eddd",
"type": "github"
},
"original": {

View file

@ -2,8 +2,8 @@
description = "jopejoe1 NixOS configuration";
inputs = {
#nixpkgs.url = "github:jopejoe1/nixpkgs/noto-emoji-unstale";
nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable";
#nixpkgs.url = "/home/jopejoe1/dev/nixpkgs/";
nixpkgs.url = "github:nixos/nixpkgs";
kde2nix.url = "github:nix-community/kde2nix";
nur.url = "github:nix-community/NUR";
home-manager= {
@ -115,7 +115,7 @@
./modules/asf
./modules/minecraft-server
./modules/kate
./modules/theming
#./modules/theming
#./modules/auto-update
./modules/services/repo-sync
#./modules/services/moodle-dl
@ -133,7 +133,7 @@
home-manager.nixosModules.home-manager
kde2nix.nixosModules.plasma6
#nyx.nixosModules.default
stylix.nixosModules.stylix
#stylix.nixosModules.stylix
];
};
yokai = nixpkgs.lib.nixosSystem {

View file

@ -1,4 +1,5 @@
{ pkgs, ... }:
{
security.rtkit.enable = true;
@ -13,46 +14,41 @@
jack.enable = true;
wireplumber.enable = true;
extraConfig.pipewire.nixos = {
"context.modules" = [{
name = "libpipewire-module-filter-chain";
args = {
"node.description" = "Noise Canceling source";
"media.name" = "Noise Canceling source";
"filter.graph" = {
nodes = [{
type = "ladspa";
name = "rnnoise";
plugin = "${pkgs.rnnoise-plugin}/lib/ladspa/librnnoise_ladspa.so";
label = "noise_suppressor_mono";
control = {
"VAD Threshold (%)" = 50.0;
"VAD Grace Period (ms)" = 200;
"Retroactive VAD Grace (ms)" = 0;
};
}];
};
"capture.props" = {
"node.name" = "capture.rnnoise_source";
"node.passive" = true;
"audio.rate" = 48000;
};
"playback.props" = {
"node.name" = "rnnoise_source";
"media.class" = "Audio/Source";
"audio.rate" = 48000;
};
};
}];
};
};
hardware.pulseaudio.enable = false;
environment.etc = {
"pipewire/pipewire.conf.d/rnnoise.conf".text = ''
context.modules = [
{ name = libpipewire-module-filter-chain
args = {
node.description = "Noise Canceling source"
media.name = "Noise Canceling source"
filter.graph = {
nodes = [
{
type = ladspa
name = rnnoise
plugin = ${pkgs.rnnoise-plugin}/lib/ladspa/librnnoise_ladspa.so
label = noise_suppressor_mono
control = {
"VAD Threshold (%)" = 50.0
"VAD Grace Period (ms)" = 200
"Retroactive VAD Grace (ms)" = 0
}
}
]
}
capture.props = {
node.name = "capture.rnnoise_source"
node.passive = true
audio.rate = 48000
}
playback.props = {
node.name = "rnnoise_source"
media.class = Audio/Source
audio.rate = 48000
}
}
}
]
'';
};
}

View file

@ -19,6 +19,7 @@
allowed-users = [ "*" ];
experimental-features = [ "nix-command" "flakes" ];
warn-dirty = false;
use-xdg-base-directories = true;
};
package = pkgs.nixVersions.nix_2_15;
registry = {
@ -39,6 +40,14 @@
nurl
nix-init
];
home-manager = {
useGlobalPkgs = true;
useUserPackages = true;
backupFileExtension = "backup";
};
system.stateVersion = "24.05";
}

View file

@ -5,8 +5,8 @@ in {
home-manager.users.jopejoe1 = {
home = {
# Basic information for home-manager
username = "jopejoe1";
homeDirectory = "/home/${hcfg.home.username}";
username = config.users.users.jopejoe1.name;
homeDirectory = config.users.users.jopejoe1.home;
# Enviroment variables
sessionVariables = {
@ -28,11 +28,16 @@ in {
address = "johannes@joens.email";
flavor = "gmail.com";
primary = true;
realName = "Johannes Joens";
realName = "Johannes Jöns";
thunderbird.enable = true;
};
};
gtk = {
enable = false;
gtk2.configLocation = "${hcfg.xdg.configHome}/gtk-2.0/gtkrc";
};
# XDG base dirs
xdg = {
enable = true;
@ -53,51 +58,30 @@ in {
templates = "${hcfg.home.homeDirectory}/Templates";
videos = "${hcfg.home.homeDirectory}/Videos";
};
configFile = {
"pipewire/pipewire.conf.d/rnnoise.conf".text = ''
context.modules = [
{ name = libpipewire-module-filter-chain
args = {
node.description = "Noise Canceling source"
media.name = "Noise Canceling source"
filter.graph = {
nodes = [
{
type = ladspa
name = rnnoise
plugin = ${pkgs.rnnoise-plugin}/lib/ladspa/librnnoise_ladspa.so
label = noise_suppressor_mono
control = {
"VAD Threshold (%)" = 50.0
"VAD Grace Period (ms)" = 200
"Retroactive VAD Grace (ms)" = 0
}
}
]
}
capture.props = {
node.name = "capture.rnnoise_source"
node.passive = true
audio.rate = 48000
}
playback.props = {
node.name = "rnnoise_source"
media.class = Audio/Source
audio.rate = 48000
}
}
}
]
'';
};
};
programs = {
home-manager.enable = true;
bash = {
enable = true;
enableCompletion = true;
enableVteIntegration = true;
historyControl = [ "erasedups" "ignoredups" "ignorespace" ];
historyFile = "${hcfg.xdg.stateHome}/bash/history";
};
git = {
enable = true;
package = pkgs.git;
userEmail = "johannes@joens.email";
userName = "jopejoe1";
extraConfig = {
core = {
whitespace = [
"blank-at-eol"
"blank-at-eof"
"space-before-tab"
];
};
};
};
direnv = {
enable = true;
@ -106,61 +90,137 @@ in {
firefox = {
enable = true;
package = pkgs.wrapFirefox pkgs.firefox-devedition-unwrapped {
extraPolicies = {
AppAutoUpdate = false;
BackgroundAppUpdate = false;
CaptivePortal = false;
DefaultDownloadDirectory = "${hcfg.xdg.userDirs.download}";
DisableAppUpdate = true;
DisableFirefoxAccounts = true;
DisableFirefoxStudies = true;
DisableForgetButton = true;
DisableFormHistory = true;
DisableMasterPasswordCreation = true;
DisablePasswordReveal = true;
DisablePocket = true;
DisableSetDesktopBackground = true;
DisableSystemAddonUpdate = true;
DisableTelemetry = true;
DontCheckDefaultBrowser = true;
ExtensionUpdate = false;
HardwareAcceleration = true;
ManualAppUpdateOnly = true;
NoDefaultBookmarks = true;
OfferToSaveLogins = false;
OfferToSaveLoginsDefault = false;
PasswordManagerEnabled = false;
PrimaryPassword = false;
SearchBar = "unified";
StartDownloadsInTempDirectory = true;
EnableTrackingProtection = {
Value = true;
EmailTracking = true;
Cryptomining = true;
Fingerprinting = true;
Locked = true;
};
FirefoxHome = {
Highlights = false;
Pocket = false;
Search = true;
Snippets = false;
SponsoredPocket = false;
SponsoredTopSites = false;
TopSites = true;
Locked = true;
};
UserMessaging = {
ExtensionRecommendations = false;
SkipOnboarding = true;
};
};
icon = "firefox-devedition";
nameSuffix = "-devedition";
pname = "firefox-devedition-bin";
pname = "firefox-devedition";
desktopName = "Firefox DevEdition";
wmClass = "firefox-devedition";
};
policies = {
AppAutoUpdate = false;
BackgroundAppUpdate = false;
CaptivePortal = false;
DefaultDownloadDirectory = "${hcfg.xdg.userDirs.download}";
DisableAccounts = true;
DisableAppUpdate = true;
DisableFirefoxAccounts = true;
DisableFirefoxStudies = true;
DisableForgetButton = true;
DisableFormHistory = true;
DisableMasterPasswordCreation = true;
DisablePasswordReveal = true;
DisablePocket = true;
DisableSetDesktopBackground = true;
DisableSystemAddonUpdate = true;
DisableTelemetry = true;
DontCheckDefaultBrowser = true;
ExtensionUpdate = false;
HardwareAcceleration = true;
ManualAppUpdateOnly = true;
NoDefaultBookmarks = true;
OfferToSaveLogins = false;
OfferToSaveLoginsDefault = false;
PasswordManagerEnabled = false;
PrimaryPassword = false;
SearchBar = "unified";
StartDownloadsInTempDirectory = true;
DNSOverHTTPS = {
Enabled = false;
Locked = true;
};
EnableTrackingProtection = {
Value = true;
EmailTracking = true;
Cryptomining = true;
Fingerprinting = true;
Locked = true;
};
FirefoxHome = {
Highlights = false;
Pocket = false;
Search = true;
Snippets = false;
SponsoredPocket = false;
SponsoredTopSites = false;
TopSites = true;
Locked = true;
};
FirefoxSuggest = {
WebSuggestions = false;
SponsoredSuggestions = false;
ImproveSuggest = false;
Locked = true;
};
PDFjs = {
Enabled = true;
EnablePermissions = false;
};
SupportMenu = {
Title = "Localhost";
URL = "http://localhost";
};
UserMessaging = {
WhatsNew = false;
ExtensionRecommendations = false;
FeatureRecommendations = false;
UrlbarInterventions = false;
SkipOnboarding = true;
MoreFromMozilla = false;
Locked = true;
};
# Extension Settings
"3rdparty" = {
Extensions = {
"uBlock0@raymondhill.net" = {
#adminSettings = {
userSettings = {
uiTheme = "dark";
autoUpdate = true;
cloudStorageEnabled = false;
webrtcIPAddressHidden = true;
};
toOverwrite = [
"user-filters"
"ublock-filters"
"ublock-badware"
"ublock-privacy"
"ublock-abuse"
"ublock-unbreak"
"ublock-quick-fixes"
"adguard-generic"
"adguard-mobile"
"easylist"
"adguard-spyware-url"
"adguard-spyware"
"block-lan"
"easyprivacy"
"urlhaus-1"
"curben-phishing"
"adguard-social"
"adguard-cookies"
"ublock-cookies-adguard"
"adguard-popup-overlays"
"adguard-mobile-app-banners"
"adguard-other-annoyances"
"adguard-widgets"
"fanboy-thirdparty_social"
"easylist-annoyances"
"easylist-chat"
"fanboy-cookiemonster"
"ublock-cookies-easylist"
"easylist-newsletters"
"easylist-notifications"
"fanboy-social"
"ublock-annoyances"
"dpollock-0"
"plowe-0"
"DEU-0"
];
};
#};
};
};
};
profiles = {
default = {
extensions = with pkgs.nur.repos.rycee.firefox-addons; [
@ -298,8 +358,55 @@ in {
"browser.zoom.siteSpecific" = true;
"config.trim_on_minimize" = true;
"pdfjs.annotationEditorMode" = 0;
"pdfjs.annotationmode" = 2;
"pdfjs.annotationMode" = 2;
"font.name-list.emoji" = lib.strings.concatStringsSep ", " config.fonts.fontconfig.defaultFonts.emoji;
## Arkenfox Stuff
"browser.aboutConfig.showWarning" = false;
"browser.newtabpage.activity-stream.showSponsored" = false;
"browser.newtabpage.activity-stream.showSponsoredTopSites" = false;
"extensions.getAddons.showPane" = false;
"extensions.htmlaboutaddons.recommendations.enabled" = false;
"browser.discovery.enabled" = false;
"browser.shopping.experience2023.enabled" = false;
"datareporting.policy.dataSubmissionEnabled" = false;
"datareporting.healthreport.uploadEnabled" = false;
"toolkit.telemetry.unified" = false;
"toolkit.telemetry.enabled" = false;
"toolkit.telemetry.server" = "data:,";
"toolkit.telemetry.archive.enabled" = false;
"toolkit.telemetry.newProfilePing.enabled" = false;
"toolkit.telemetry.shutdownPingSender.enabled" = false;
"toolkit.telemetry.updatePing.enabled" = false;
"toolkit.telemetry.bhrPing.enabled" = false;
"toolkit.telemetry.firstShutdownPing.enabled" = false;
"toolkit.telemetry.coverage.opt-out" = true;
"toolkit.coverage.opt-out" = true;
"toolkit.coverage.endpoint.base" = "";
"browser.ping-centre.telemetry" = false;
"browser.newtabpage.activity-stream.feeds.telemetry" = false;
"browser.newtabpage.activity-stream.telemetry" = false;
"app.shield.optoutstudies.enabled" = false;
"app.normandy.enabled" = false;
"app.normandy.api_url" = "";
"breakpad.reportURL" = "";
"browser.tabs.crashReporting.sendReport" = false;
"browser.crashReports.unsubmittedCheck.autoSubmit2" = false;
"captivedetect.canonicalURL" = "";
"network.captive-portal-service.enabled" = false;
"network.connectivity-service.enabled" = false;
"network.prefetch-next" = false;
"network.dns.disablePrefetch" = true;
"network.predictor.enabled" = false;
"network.predictor.enable-prefetch" = false;
"network.http.speculative-parallel-limit" = 0;
"browser.places.speculativeConnect.enabled" = false;
"browser.urlbar.speculativeConnect.enabled" = false;
"browser.urlbar.suggest.quicksuggest.nonsponsored" = false;
"browser.urlbar.suggest.quicksuggest.sponsored" = false;
"browser.formfill.enable" = false;
"browser.download.start_downloads_in_tmp_dir" = true;
"browser.uitour.enabled" = false;
};
};
dev-edition-default = {

View file

@ -1,4 +1,4 @@
{ prismlauncher, nur, self, pkgs, ... }:
{ prismlauncher, nur, self, pkgs, config, ... }:
{
nixpkgs = {
@ -44,11 +44,4 @@
})
];
};
home-manager = {
useGlobalPkgs = true;
useUserPackages = true;
};
system.stateVersion = "23.05";
}

View file

@ -70,6 +70,8 @@
teams-for-linux
webex
discord
element-desktop
mumble
(python3.withPackages(ps: with ps; [ beautifulsoup4 requests]))