fix(system): properly configure jupyter #110

Merged
jalil merged 1 commit from fix-jupyter into main 2024-10-16 18:54:53 +02:00
3 changed files with 149 additions and 124 deletions
Showing only changes of commit b49f332f34 - Show all commits

View file

@ -1,46 +1,55 @@
{ inputs, lib, ... }: { inputs, lib, ... }:
let
system = "x86_64-linux";
overlays = builtins.attrValues inputs.self.overlays;
config.allowUnfreePredicate = pkg: builtins.elem (lib.getName pkg) [ "steam-original" ];
pkgs = import inputs.nixpkgs { inherit system overlays config; };
in
{ {
# Example vm configuration # Example vm configuration
flake.nixosConfigurations.vm = flake.nixosConfigurations.vm = lib.nixosSystem {
let inherit system pkgs;
system = "x86_64-linux"; modules = [
overlays = builtins.attrValues inputs.self.overlays; inputs.self.nixosModules.vm # import vm module
config.allowUnfreePredicate = pkg: builtins.elem (lib.getName pkg) [ "steam-original" ]; {
pkgs = import inputs.nixpkgs { inherit system overlays config; }; time.timeZone = "Europe/Berlin";
in i18n.defaultLocale = "en_US.UTF-8";
lib.nixosSystem { users.users.jdoe = {
inherit system pkgs; password = "example";
modules = [ isNormalUser = true;
inputs.self.nixosModules.vm # import vm module extraGroups = [
{ "wheel"
time.timeZone = "Europe/Berlin"; "video"
i18n.defaultLocale = "en_US.UTF-8"; "networkmanager"
users.users.jdoe = { ];
password = "example"; };
isNormalUser = true; home-manager.users.jdoe = {
extraGroups = [ home = {
"wheel" username = "jdoe";
"video" homeDirectory = "/home/jdoe";
"networkmanager"
];
}; };
home-manager.users.jdoe = { jhome = {
home = {
username = "jdoe";
homeDirectory = "/home/jdoe";
};
jhome = {
enable = true;
gui.enable = true;
dev.rust.enable = true;
};
};
nix.registry.nixpkgs.flake = inputs.nixpkgs;
jconfig = {
enable = true; enable = true;
gui.enable = true; gui.enable = true;
dev = {
enable = true;
rust.enable = true;
};
}; };
} };
]; nix.registry.nixpkgs.flake = inputs.nixpkgs;
}; # password is 'test' see module documentation for more options
services.jupyter.password = "'sha1:1b961dc713fb:88483270a63e57d18d43cf337e629539de1436ba'";
jconfig = {
enable = true;
dev = {
enable = true;
jupyter.enable = true;
};
gui.enable = true;
};
}
];
};
} }

View file

@ -26,92 +26,105 @@ in
{ stylix = import ./stylix-config.nix { inherit config pkgs; }; } { stylix = import ./stylix-config.nix { inherit config pkgs; }; }
]; ];
config = lib.mkIf cfg.enable { config = lib.mkIf cfg.enable (
boot.plymouth.enable = cfg.styling.enable; lib.mkMerge [
{
# Enable unlocking the gpg-agent at boot (configured through home.nix) boot.plymouth = {
security.pam.services.login.gnupg.enable = true; inherit (cfg.styling) enable;
environment.systemPackages = [
# CLI tools
pkgs.fd
pkgs.bat
pkgs.skim
pkgs.ripgrep
pkgs.du-dust
pkgs.curl
pkgs.wget
pkgs.eza
pkgs.zip
pkgs.unzip
];
# Enable dev documentation
documentation.dev.enable = cfg.dev.enable;
programs = {
# Shell prompt
starship = {
enable = true;
settings = lib.mkIf cfg.styling.enable {
format = "$time$all";
add_newline = false;
cmd_duration.min_time = 500;
cmd_duration.show_milliseconds = true;
time = {
format = "[$time](bold yellow) ";
disabled = false;
};
status = {
format = "[$signal_name$common_meaning$maybe_int](red)";
symbol = "[](bold red)";
disabled = false;
};
sudo.disabled = false;
}; };
};
# Default shell
zsh.enable = true;
};
environment.etc = keysFromGithub; # Enable unlocking the gpg-agent at boot (configured through home.nix)
services = { security.pam.services.login.gnupg.enable = true;
# Enable printer autodiscovery if printing is enabled
avahi = { environment.systemPackages = [
inherit (config.services.printing) enable; # CLI tools
nssmdns4 = true; pkgs.fd
openFirewall = true; pkgs.bat
}; pkgs.skim
openssh.authorizedKeysFiles = builtins.map (path: "/etc/${path}") ( pkgs.ripgrep
builtins.attrNames keysFromGithub pkgs.du-dust
); pkgs.curl
jupyter = { pkgs.wget
inherit (cfg.dev) enable; pkgs.eza
group = "users"; pkgs.zip
}; pkgs.unzip
};
users.defaultUserShell = pkgs.zsh;
# Open ports for spotifyd
networking.firewall = {
allowedUDPPorts = [ 5353 ];
allowedTCPPorts = [ 2020 ];
};
# Nix Settings
nix = {
gc = {
automatic = true;
dates = "weekly";
options = "--delete-older-than 30d";
# run between 0 and 45min after boot if run was missed
randomizedDelaySec = "45min";
};
settings = {
use-xdg-base-directories = true;
auto-optimise-store = true;
experimental-features = [
"nix-command"
"flakes"
]; ];
};
}; # Enable dev documentation
}; documentation.dev = {
inherit (cfg.dev) enable;
};
programs = {
# Shell prompt
starship = {
enable = true;
settings = {
format = "$time$all";
add_newline = false;
cmd_duration.min_time = 500;
cmd_duration.show_milliseconds = true;
time = {
format = "[$time](bold yellow) ";
disabled = false;
};
status = {
format = "[$signal_name$common_meaning$maybe_int](red)";
symbol = "[](bold red)";
disabled = false;
};
sudo.disabled = false;
};
};
# Default shell
zsh.enable = true;
};
environment.etc = keysFromGithub;
services = {
# Enable printer autodiscovery if printing is enabled
avahi = {
inherit (config.services.printing) enable;
nssmdns4 = true;
openFirewall = true;
};
openssh.authorizedKeysFiles = builtins.map (path: "/etc/${path}") (
builtins.attrNames keysFromGithub
);
};
users.defaultUserShell = pkgs.zsh;
# Open ports for spotifyd
networking.firewall = {
allowedUDPPorts = [ 5353 ];
allowedTCPPorts = [ 2020 ];
};
# Nix Settings
nix = {
gc = {
automatic = true;
dates = "weekly";
options = "--delete-older-than 30d";
# run between 0 and 45min after boot if run was missed
randomizedDelaySec = "45min";
};
settings = {
use-xdg-base-directories = true;
auto-optimise-store = true;
experimental-features = [
"nix-command"
"flakes"
];
};
};
}
# dev configuration
(lib.mkIf cfg.dev.enable {
users.extraUsers = lib.mkIf cfg.dev.jupyter.enable { jupyter.group = "jupyter"; };
services.jupyter = {
inherit (cfg.dev.jupyter) enable;
group = "jupyter";
user = "jupyter";
};
})
]
);
} }

View file

@ -60,7 +60,10 @@ let
dev = lib.mkOption { dev = lib.mkOption {
description = "Options for setting up a dev environment"; description = "Options for setting up a dev environment";
default = { }; default = { };
type = types.submodule { options.enable = lib.mkEnableOption "dev configuration"; }; type = types.submodule {
options.enable = lib.mkEnableOption "dev configuration";
options.jupyter.enable = lib.mkEnableOption "jupyter configuration";
};
}; };
gui = lib.mkOption { gui = lib.mkOption {
description = "Jalil's default configuration for a NixOS gui."; description = "Jalil's default configuration for a NixOS gui.";