From 498f86306639d49309e61f56c976c0e6a9741240 Mon Sep 17 00:00:00 2001 From: autumn Date: Wed, 3 Sep 2025 10:40:07 -0600 Subject: [PATCH] starting poking at dev environments --- flake.nix | 2 +- system/extras/pydev.nix | 115 +++++++++++++++++++++++++++++ system/yukigekko/configuration.nix | 15 ++++ 3 files changed, 131 insertions(+), 1 deletion(-) create mode 100644 system/extras/pydev.nix diff --git a/flake.nix b/flake.nix index ced3325..546740a 100644 --- a/flake.nix +++ b/flake.nix @@ -3,7 +3,7 @@ description = "Autumn's multi-system configs"; inputs = { - # pydev.url ="./subflakes/pydev.nix"; + pydev.url ="./system/extras/pydev.nix"; nixpkgs.url = "github:nixos/nixpkgs?ref=nixos-unstable"; home-manager.url = "github:nix-community/home-manager"; home-manager.inputs.nixpkgs.follows = "nixpkgs"; diff --git a/system/extras/pydev.nix b/system/extras/pydev.nix new file mode 100644 index 0000000..e632c2c --- /dev/null +++ b/system/extras/pydev.nix @@ -0,0 +1,115 @@ +{ + description = "Python UV dev environment"; + inputs = { + nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable"; + pyproject-nix = { + url = "github:pyproject-nix/pyproject.nix"; + inputs.nixpkgs.follows = "nixpkgs"; + }; + uv2nix = { + url = "github:pyproject-nix/uv2nix"; + inputs.pyproject-nix.folows = "pyproject-nix"; + inputs.nixpkgs.follows = "nixpkgs"; + }; + pyproject-build-systems = { + url = "github:pyproject-nix/build-system-pkgs"; + inputs.pyproject-nex.follows = "pyproject-nix"; + inputs.uv2nix.follow = "uv2nix"; + inputs.nixpkgs.follows = "nixpkgs"; + }; + }; + + outputs = { + self, + nixpkgs, + uv2nix, + pyproject-nix, + pyproject-build-systems, + ... + }: + let + inherit (nixpkgs) lib; + + workspace = uv2nix.lib.workspace.loadWorkspace {workspaceRoot = ./.;}; + overlay = workspace.mkPyProjectOverlay{ + sorcePreference = "wheel"; + }; + pyprojectOverrides = _final: _prev: {}; + + pkgs = nixpkgs.legacyPackages.x86-64-linux; + + python = pkgs.python314; + + pythonSet = + (pkgs.callPackage pyproject-nix.build.packages{ + inherit python; + }).overrideScope + ( + lib.composeManyExtensions [ + pyproject-build-systems.overlays.default + overlay + pyprojectOverrides + ] + ); + + in + { + packages.x86_64-linux.default = pythonSet.mkVirtualEnv "autumnism" workspace.deps.default; + apps.x86_64-linux = { + default = { + type ="app"; + program = "${self.packages.x86_64-linux.default}/bin/hello"; + }; + }; + + devShells.x86_64-linux = { + uv2nix = + let + editableOverlay = workspace.mkEditablePyprojectOverlay { + root = "$REPO_ROOT"; + } + editablePythonSet = pythonSet.overrideScope ( + lib.composeManyExtensions [ + editableOverlay + (final: prev: { + autumnism = prev.autumnism.overrideAttrs (old: { + src = lib.fileset.toSource { + root = old.src; + fileset = lib.fileset.unions [ + (old.src + "pyproject.toml") + (old.src + "/README.md") + (old.src + "/src/autumnism") + ]; + }; + nativeBuildInputs = + old.nativeBuildInputs + ++ final.resolveBuildSystem { + editables = [ ]; + }; + }); + }) + ] + ); + virtualenv = editablePythonSet.mkVirtualEnv "autumnism-dev-env" workspace.deps.all; + in + pkgs.mkShell { + packages = [ + virtualenv + pkgs.uv + ]; + + env = { + UV_NO_SYNC = "1"; + UV_PYTHON = python.interpreter; + UV_PYTHON_DOWNLOADS = "never"; + }; + + shellHook = '' + unset PYTHONPATH + export REPO_ROOT=$(git rev-parse --show-toplevel) + ''; + + }; + }; + }; +} diff --git a/system/yukigekko/configuration.nix b/system/yukigekko/configuration.nix index d49e187..c92d284 100644 --- a/system/yukigekko/configuration.nix +++ b/system/yukigekko/configuration.nix @@ -71,7 +71,21 @@ vim pavucontrol nh + docker + docker-compose + podman + skopeo + buildkit ]; + + virtualisation.containers.policy = { + default = [{type = "insecureAcceptAnything";}]; + transports = { + docker-daemon = { + "" = [{type = "insecureAcceptAnything";}]; + }; + }; + }; nix.settings.experimental-features = ["nix-command" "flakes"]; nix.settings.download-buffer-size = 5242880000; @@ -93,5 +107,6 @@ system.autoUpgrade.enable = true; system.autoUpgrade.allowReboot = true; + system.autoUpgrade.flake = "../../flake.nix"; qt.platformTheme = "kde6"; }