Add framework keyboard bits, tweak niri, add framework plymouth boot screen
1
.ignore
@ -1,3 +1,4 @@
|
|||||||
# dotfiles/
|
# dotfiles/
|
||||||
.git/
|
.git/
|
||||||
flake.lock
|
flake.lock
|
||||||
|
frame12/framework-plymouth-theme
|
||||||
|
|||||||
426
WORK_TOOLS_MODULE_DESIGN.md
Normal file
@ -0,0 +1,426 @@
|
|||||||
|
# Work Tools Module Design Document
|
||||||
|
|
||||||
|
## Overview
|
||||||
|
|
||||||
|
A modular NixOS configuration for work-specific development tools and services. This allows clean separation between personal and work machines while enabling easy reuse across multiple work systems.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Module Structure
|
||||||
|
|
||||||
|
### Proposed Location
|
||||||
|
```
|
||||||
|
shared/modules/work/work_tools.nix
|
||||||
|
```
|
||||||
|
|
||||||
|
This places it in the shared modules directory since it could be used across multiple work machines.
|
||||||
|
|
||||||
|
### Alternative Location
|
||||||
|
```
|
||||||
|
nate-work/modules/work/work_tools.nix
|
||||||
|
```
|
||||||
|
|
||||||
|
Use this if the tools are specific to a single work environment.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Module Design
|
||||||
|
|
||||||
|
### Basic Structure
|
||||||
|
|
||||||
|
```nix
|
||||||
|
{ inputs, lib, config, pkgs, ... }:
|
||||||
|
let
|
||||||
|
unstable = import inputs.nixpkgs-unstable {
|
||||||
|
system = "x86_64-linux";
|
||||||
|
config.allowUnfree = true;
|
||||||
|
};
|
||||||
|
in
|
||||||
|
{
|
||||||
|
options.work_tools = {
|
||||||
|
enable = lib.mkEnableOption "Enable work development tools and services";
|
||||||
|
|
||||||
|
enableDocker = lib.mkOption {
|
||||||
|
type = lib.types.bool;
|
||||||
|
default = true;
|
||||||
|
description = "Enable Docker and related containerization tools";
|
||||||
|
};
|
||||||
|
|
||||||
|
enableVirtualization = lib.mkOption {
|
||||||
|
type = lib.types.bool;
|
||||||
|
default = true;
|
||||||
|
description = "Enable QEMU/KVM virtualization";
|
||||||
|
};
|
||||||
|
|
||||||
|
enableGoTools = lib.mkOption {
|
||||||
|
type = lib.types.bool;
|
||||||
|
default = true;
|
||||||
|
description = "Enable Go development toolchain";
|
||||||
|
};
|
||||||
|
|
||||||
|
enableNodeTools = lib.mkOption {
|
||||||
|
type = lib.types.bool;
|
||||||
|
default = true;
|
||||||
|
description = "Enable Node.js development tools";
|
||||||
|
};
|
||||||
|
|
||||||
|
enableDatabaseTools = lib.mkOption {
|
||||||
|
type = lib.types.bool;
|
||||||
|
default = true;
|
||||||
|
description = "Enable database clients and tools";
|
||||||
|
};
|
||||||
|
|
||||||
|
user = lib.mkOption {
|
||||||
|
type = lib.types.str;
|
||||||
|
description = "Username for service configurations";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
config = lib.mkIf config.work_tools.enable {
|
||||||
|
# Docker configuration
|
||||||
|
virtualisation.docker = lib.mkIf config.work_tools.enableDocker {
|
||||||
|
enable = true;
|
||||||
|
enableOnBoot = true;
|
||||||
|
package = unstable.docker_25;
|
||||||
|
};
|
||||||
|
|
||||||
|
users.groups.docker.members = lib.mkIf config.work_tools.enableDocker
|
||||||
|
[ config.work_tools.user ];
|
||||||
|
|
||||||
|
# Virtualization
|
||||||
|
virtualisation.libvirtd = lib.mkIf config.work_tools.enableVirtualization {
|
||||||
|
enable = true;
|
||||||
|
qemu = {
|
||||||
|
swtpm.enable = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
virtualisation.spiceUSBRedirection.enable =
|
||||||
|
lib.mkIf config.work_tools.enableVirtualization true;
|
||||||
|
|
||||||
|
users.groups.libvirtd.members = lib.mkIf config.work_tools.enableVirtualization
|
||||||
|
[ config.work_tools.user ];
|
||||||
|
|
||||||
|
programs.virt-manager.enable =
|
||||||
|
lib.mkIf config.work_tools.enableVirtualization true;
|
||||||
|
|
||||||
|
# NFS support (if needed for remote dev environments)
|
||||||
|
boot.initrd.supportedFilesystems = lib.mkIf config.work_tools.enableVirtualization
|
||||||
|
{ nfs = true; };
|
||||||
|
|
||||||
|
# System packages that don't fit into categories
|
||||||
|
environment.systemPackages = with pkgs; lib.lists.flatten [
|
||||||
|
(lib.optionals config.work_tools.enableDocker [
|
||||||
|
docker-compose
|
||||||
|
])
|
||||||
|
];
|
||||||
|
};
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
### Home Manager Companion Module
|
||||||
|
|
||||||
|
Create a companion home-manager module for user-level packages:
|
||||||
|
|
||||||
|
```
|
||||||
|
shared/modules/work/work_tools_home.nix
|
||||||
|
```
|
||||||
|
|
||||||
|
```nix
|
||||||
|
{ inputs, lib, config, pkgs, ... }:
|
||||||
|
let
|
||||||
|
unstable = import inputs.nixpkgs-unstable {
|
||||||
|
system = "x86_64-linux";
|
||||||
|
config.allowUnfree = true;
|
||||||
|
};
|
||||||
|
in
|
||||||
|
{
|
||||||
|
options.work_tools_home = {
|
||||||
|
enable = lib.mkEnableOption "Enable work development tools in home";
|
||||||
|
|
||||||
|
enableGoTools = lib.mkOption {
|
||||||
|
type = lib.types.bool;
|
||||||
|
default = true;
|
||||||
|
description = "Enable Go development toolchain";
|
||||||
|
};
|
||||||
|
|
||||||
|
enableNodeTools = lib.mkOption {
|
||||||
|
type = lib.types.bool;
|
||||||
|
default = true;
|
||||||
|
description = "Enable Node.js development tools";
|
||||||
|
};
|
||||||
|
|
||||||
|
enableDatabaseTools = lib.mkOption {
|
||||||
|
type = lib.types.bool;
|
||||||
|
default = true;
|
||||||
|
description = "Enable database clients";
|
||||||
|
};
|
||||||
|
|
||||||
|
enableAwsTools = lib.mkOption {
|
||||||
|
type = lib.types.bool;
|
||||||
|
default = true;
|
||||||
|
description = "Enable AWS CLI and related tools";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
config = lib.mkIf config.work_tools_home.enable {
|
||||||
|
home.packages = with pkgs; lib.lists.flatten [
|
||||||
|
# Development tools
|
||||||
|
(lib.optionals config.work_tools_home.enableGoTools [
|
||||||
|
go
|
||||||
|
unstable.delve
|
||||||
|
gotools
|
||||||
|
go-tools
|
||||||
|
govulncheck
|
||||||
|
unstable.golangci-lint
|
||||||
|
go-swag
|
||||||
|
gopls
|
||||||
|
])
|
||||||
|
|
||||||
|
(lib.optionals config.work_tools_home.enableNodeTools [
|
||||||
|
nodejs_24
|
||||||
|
husky
|
||||||
|
pnpm
|
||||||
|
yarn
|
||||||
|
typescript-language-server
|
||||||
|
])
|
||||||
|
|
||||||
|
(lib.optionals config.work_tools_home.enableDatabaseTools [
|
||||||
|
mariadb
|
||||||
|
])
|
||||||
|
|
||||||
|
(lib.optionals config.work_tools_home.enableAwsTools [
|
||||||
|
awscli2
|
||||||
|
])
|
||||||
|
|
||||||
|
# General dev tools
|
||||||
|
vscode-fhs
|
||||||
|
jq
|
||||||
|
gnumake
|
||||||
|
cmake
|
||||||
|
gcc
|
||||||
|
gh
|
||||||
|
trivy
|
||||||
|
oxker # docker TUI
|
||||||
|
|
||||||
|
# Additional LSPs
|
||||||
|
yaml-language-server
|
||||||
|
ltex-ls
|
||||||
|
];
|
||||||
|
|
||||||
|
# Work-specific zsh configuration
|
||||||
|
programs.zsh.initExtra = lib.mkIf config.work_tools_home.enable ''
|
||||||
|
# Work environment variables
|
||||||
|
if [ -f ~/.vasion_env ]; then
|
||||||
|
source ~/.vasion_env
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Work functions
|
||||||
|
if [ -f ~/.config/zsh_functions.zsh ]; then
|
||||||
|
source ~/.config/zsh_functions.zsh
|
||||||
|
fi
|
||||||
|
|
||||||
|
export GOBIN=~/go/bin
|
||||||
|
export PATH=$PATH:$GOBIN
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Integration Steps
|
||||||
|
|
||||||
|
### 1. Create the module files
|
||||||
|
- [ ] Create `shared/modules/work/work_tools.nix`
|
||||||
|
- [ ] Create `shared/modules/work/work_tools_home.nix`
|
||||||
|
|
||||||
|
### 2. Import in nate-work system configuration
|
||||||
|
|
||||||
|
In `nate-work/desktop-configuration.nix`:
|
||||||
|
|
||||||
|
```nix
|
||||||
|
imports = [
|
||||||
|
# ... existing imports
|
||||||
|
../shared/modules/work/work_tools.nix
|
||||||
|
];
|
||||||
|
|
||||||
|
config = {
|
||||||
|
# ... existing config
|
||||||
|
|
||||||
|
work_tools = {
|
||||||
|
enable = true;
|
||||||
|
enableDocker = true;
|
||||||
|
enableVirtualization = true;
|
||||||
|
enableGoTools = true;
|
||||||
|
enableNodeTools = true;
|
||||||
|
enableDatabaseTools = true;
|
||||||
|
user = deskCfg.userName;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
```
|
||||||
|
|
||||||
|
### 3. Import in nate-work home-manager configuration
|
||||||
|
|
||||||
|
In `nate-work/modules/home-manager/home.nix`:
|
||||||
|
|
||||||
|
```nix
|
||||||
|
imports = [
|
||||||
|
# ... existing imports
|
||||||
|
../../../shared/modules/work/work_tools_home.nix
|
||||||
|
];
|
||||||
|
|
||||||
|
work_tools_home = {
|
||||||
|
enable = true;
|
||||||
|
enableGoTools = true;
|
||||||
|
enableNodeTools = true;
|
||||||
|
enableDatabaseTools = true;
|
||||||
|
enableAwsTools = true;
|
||||||
|
};
|
||||||
|
```
|
||||||
|
|
||||||
|
### 4. Remove work packages from nirihome.homePackages
|
||||||
|
|
||||||
|
Clean up the existing package list by removing packages now provided by work_tools_home.
|
||||||
|
|
||||||
|
### 5. Test the configuration
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Dry-run to check for errors
|
||||||
|
nix build .#nixosConfigurations.nate-work.config.system.build.toplevel --dry-run
|
||||||
|
|
||||||
|
# If successful, rebuild
|
||||||
|
sudo nixos-rebuild switch --flake .#nate-work
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Benefits
|
||||||
|
|
||||||
|
### Modularity
|
||||||
|
- Easy to enable/disable categories of tools
|
||||||
|
- Can be reused across multiple work machines
|
||||||
|
- Keeps personal configs clean
|
||||||
|
|
||||||
|
### Flexibility
|
||||||
|
- Granular control via boolean flags
|
||||||
|
- Can enable only needed tool categories
|
||||||
|
- Easy to add new tool categories
|
||||||
|
|
||||||
|
### Maintainability
|
||||||
|
- Single source of truth for work tools
|
||||||
|
- Easier to update work tooling across systems
|
||||||
|
- Clear separation of concerns
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Future Enhancements
|
||||||
|
|
||||||
|
### Additional Tool Categories
|
||||||
|
```nix
|
||||||
|
enablePythonTools = lib.mkOption {
|
||||||
|
type = lib.types.bool;
|
||||||
|
default = false;
|
||||||
|
description = "Enable Python development tools";
|
||||||
|
};
|
||||||
|
|
||||||
|
enableRustTools = lib.mkOption {
|
||||||
|
type = lib.types.bool;
|
||||||
|
default = false;
|
||||||
|
description = "Enable Rust development toolchain";
|
||||||
|
};
|
||||||
|
|
||||||
|
enableCloudTools = lib.mkOption {
|
||||||
|
type = lib.types.bool;
|
||||||
|
default = false;
|
||||||
|
description = "Enable cloud provider CLIs (Azure, GCP)";
|
||||||
|
};
|
||||||
|
```
|
||||||
|
|
||||||
|
### Company-Specific Customization
|
||||||
|
```nix
|
||||||
|
company = lib.mkOption {
|
||||||
|
type = lib.types.enum [ "vasion" "other" ];
|
||||||
|
default = "vasion";
|
||||||
|
description = "Company-specific tool configurations";
|
||||||
|
};
|
||||||
|
```
|
||||||
|
|
||||||
|
### Environment File Management
|
||||||
|
Could integrate automated setup of `.vasion_env` or similar:
|
||||||
|
|
||||||
|
```nix
|
||||||
|
work_tools_home.envFile = lib.mkOption {
|
||||||
|
type = lib.types.nullOr lib.types.path;
|
||||||
|
default = null;
|
||||||
|
description = "Path to work environment variables file";
|
||||||
|
};
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Verification Checklist
|
||||||
|
|
||||||
|
After creating the module:
|
||||||
|
|
||||||
|
- [ ] Module imports correctly in desktop-configuration.nix
|
||||||
|
- [ ] Module imports correctly in home.nix
|
||||||
|
- [ ] Options can be toggled without errors
|
||||||
|
- [ ] Docker service starts correctly
|
||||||
|
- [ ] Libvirtd service starts correctly
|
||||||
|
- [ ] Go tools are in PATH
|
||||||
|
- [ ] Node tools are in PATH
|
||||||
|
- [ ] AWS CLI works
|
||||||
|
- [ ] User is in correct groups (docker, libvirtd)
|
||||||
|
- [ ] No duplicate packages between work_tools and personal configs
|
||||||
|
- [ ] Build succeeds with `nix flake check`
|
||||||
|
- [ ] System rebuilds successfully
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Migration Path
|
||||||
|
|
||||||
|
### Current State (nate-work)
|
||||||
|
Work tools scattered across:
|
||||||
|
- `nate-work/modules/niri/niri_conf.nix` (docker, virt-manager)
|
||||||
|
- `nate-work/modules/home-manager/home.nix` (go, node, aws tools)
|
||||||
|
|
||||||
|
### Target State
|
||||||
|
Work tools consolidated in:
|
||||||
|
- `shared/modules/work/work_tools.nix` (system-level)
|
||||||
|
- `shared/modules/work/work_tools_home.nix` (user-level)
|
||||||
|
|
||||||
|
### Steps
|
||||||
|
1. Create module files
|
||||||
|
2. Import modules
|
||||||
|
3. Enable with appropriate flags
|
||||||
|
4. Remove duplicate package declarations
|
||||||
|
5. Test rebuild
|
||||||
|
6. Verify all tools still work
|
||||||
|
7. Commit changes
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Questions to Answer
|
||||||
|
|
||||||
|
Before implementing:
|
||||||
|
|
||||||
|
1. **Should this be in `shared/` or `nate-work/modules/`?**
|
||||||
|
- Recommendation: `shared/` if you might have multiple work machines
|
||||||
|
- Use `nate-work/modules/` if this is Vasion-specific
|
||||||
|
|
||||||
|
2. **Do you want separate modules per tool category?**
|
||||||
|
- Could split into: `work_docker.nix`, `work_go.nix`, etc.
|
||||||
|
- Tradeoff: More files vs. better separation
|
||||||
|
|
||||||
|
3. **Should work tools include LSPs?**
|
||||||
|
- Currently LSPs are in home.nix
|
||||||
|
- Could move to work_tools_home for consistency
|
||||||
|
|
||||||
|
4. **Do you want cloud-specific tool categories?**
|
||||||
|
- AWS tools separate from GCP/Azure?
|
||||||
|
- Or generic "cloud tools" category?
|
||||||
|
|
||||||
|
5. **Should VPN proxy module be part of work_tools?**
|
||||||
|
- Currently separate module
|
||||||
|
- Could integrate or keep separate
|
||||||
72
flake.lock
generated
@ -5,11 +5,11 @@
|
|||||||
"nixpkgs": "nixpkgs"
|
"nixpkgs": "nixpkgs"
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1749223974,
|
"lastModified": 1770551880,
|
||||||
"narHash": "sha256-/GAQYRW1duU81KG//2wI9ax8EkHVG/e1UOD97NdwLOY=",
|
"narHash": "sha256-+cS5yXWsSLiK36+PP/+dcQdxpXSclx2d65p7l6Dis+A=",
|
||||||
"owner": "catppuccin",
|
"owner": "catppuccin",
|
||||||
"repo": "nix",
|
"repo": "nix",
|
||||||
"rev": "3a42cd79c647360ee8742659e42aeec0947dd3b4",
|
"rev": "db4dfe3f2a80e9c33492d839accd49f75c7324c2",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@ -46,11 +46,11 @@
|
|||||||
]
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1764866045,
|
"lastModified": 1770260404,
|
||||||
"narHash": "sha256-0GsEtXV9OquDQ1VclQfP16cU5VZh7NEVIOjSH4UaJuM=",
|
"narHash": "sha256-3iVX1+7YUIt23hBx1WZsUllhbmP2EnXrV8tCRbLxHc8=",
|
||||||
"owner": "nix-community",
|
"owner": "nix-community",
|
||||||
"repo": "home-manager",
|
"repo": "home-manager",
|
||||||
"rev": "f63d0fe9d81d36e5fc95497217a72e02b8b7bcab",
|
"rev": "0d782ee42c86b196acff08acfbf41bb7d13eed5b",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@ -62,11 +62,11 @@
|
|||||||
},
|
},
|
||||||
"nixos-hardware": {
|
"nixos-hardware": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1761759700,
|
"lastModified": 1770631810,
|
||||||
"narHash": "sha256-zuiwvKAPwtMmwf44tb7Q7Y5d7JkBeuaF89PISUnkWA8=",
|
"narHash": "sha256-b7iK/x+zOXbjhRqa+XBlYla4zFvPZyU5Ln2HJkiSnzc=",
|
||||||
"owner": "NixOS",
|
"owner": "NixOS",
|
||||||
"repo": "nixos-hardware",
|
"repo": "nixos-hardware",
|
||||||
"rev": "2379bc40992ec29feb1933bb4acd224fa055f3f8",
|
"rev": "2889685785848de940375bf7fea5e7c5a3c8d502",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@ -78,11 +78,11 @@
|
|||||||
},
|
},
|
||||||
"nixpkgs": {
|
"nixpkgs": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1744463964,
|
"lastModified": 1770197578,
|
||||||
"narHash": "sha256-LWqduOgLHCFxiTNYi3Uj5Lgz0SR+Xhw3kr/3Xd0GPTM=",
|
"narHash": "sha256-AYqlWrX09+HvGs8zM6ebZ1pwUqjkfpnv8mewYwAo+iM=",
|
||||||
"owner": "NixOS",
|
"owner": "NixOS",
|
||||||
"repo": "nixpkgs",
|
"repo": "nixpkgs",
|
||||||
"rev": "2631b0b7abcea6e640ce31cd78ea58910d31e650",
|
"rev": "00c21e4c93d963c50d4c0c89bfa84ed6e0694df2",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@ -94,11 +94,11 @@
|
|||||||
},
|
},
|
||||||
"nixpkgs-unstable": {
|
"nixpkgs-unstable": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1769018530,
|
"lastModified": 1770562336,
|
||||||
"narHash": "sha256-MJ27Cy2NtBEV5tsK+YraYr2g851f3Fl1LpNHDzDX15c=",
|
"narHash": "sha256-ub1gpAONMFsT/GU2hV6ZWJjur8rJ6kKxdm9IlCT0j84=",
|
||||||
"owner": "nixos",
|
"owner": "nixos",
|
||||||
"repo": "nixpkgs",
|
"repo": "nixpkgs",
|
||||||
"rev": "88d3861acdd3d2f0e361767018218e51810df8a1",
|
"rev": "d6c71932130818840fc8fe9509cf50be8c64634f",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@ -110,11 +110,11 @@
|
|||||||
},
|
},
|
||||||
"nixpkgs_2": {
|
"nixpkgs_2": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1769089682,
|
"lastModified": 1770464364,
|
||||||
"narHash": "sha256-9yA/LIuAVQq0lXelrZPjLuLVuZdm03p8tfmHhnDIkms=",
|
"narHash": "sha256-z5NJPSBwsLf/OfD8WTmh79tlSU8XgIbwmk6qB1/TFzY=",
|
||||||
"owner": "nixos",
|
"owner": "nixos",
|
||||||
"repo": "nixpkgs",
|
"repo": "nixpkgs",
|
||||||
"rev": "078d69f03934859a181e81ba987c2bb033eebfc5",
|
"rev": "23d72dabcb3b12469f57b37170fcbc1789bd7457",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@ -126,11 +126,11 @@
|
|||||||
},
|
},
|
||||||
"nixpkgs_3": {
|
"nixpkgs_3": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1749285348,
|
"lastModified": 1770562336,
|
||||||
"narHash": "sha256-frdhQvPbmDYaScPFiCnfdh3B/Vh81Uuoo0w5TkWmmjU=",
|
"narHash": "sha256-ub1gpAONMFsT/GU2hV6ZWJjur8rJ6kKxdm9IlCT0j84=",
|
||||||
"owner": "nixos",
|
"owner": "nixos",
|
||||||
"repo": "nixpkgs",
|
"repo": "nixpkgs",
|
||||||
"rev": "3e3afe5174c561dee0df6f2c2b2236990146329f",
|
"rev": "d6c71932130818840fc8fe9509cf50be8c64634f",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@ -143,15 +143,14 @@
|
|||||||
"nur": {
|
"nur": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"flake-parts": "flake-parts",
|
"flake-parts": "flake-parts",
|
||||||
"nixpkgs": "nixpkgs_3",
|
"nixpkgs": "nixpkgs_3"
|
||||||
"treefmt-nix": "treefmt-nix"
|
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1749411920,
|
"lastModified": 1770671471,
|
||||||
"narHash": "sha256-b8gH96+gNoLMudWbM5B3AuAnr1uvOmAIrCuq08BfDGI=",
|
"narHash": "sha256-XpSArPAk0WwHVB3Lj4/J9eFUTWhjhL9KXSIOPelCENY=",
|
||||||
"owner": "nix-community",
|
"owner": "nix-community",
|
||||||
"repo": "NUR",
|
"repo": "NUR",
|
||||||
"rev": "73d91ecf207a0796b50f5a60c824073363dc52ae",
|
"rev": "2a64dca9f90414d5cf6d5c49c30aff09dcb709de",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@ -169,27 +168,6 @@
|
|||||||
"nixpkgs-unstable": "nixpkgs-unstable",
|
"nixpkgs-unstable": "nixpkgs-unstable",
|
||||||
"nur": "nur"
|
"nur": "nur"
|
||||||
}
|
}
|
||||||
},
|
|
||||||
"treefmt-nix": {
|
|
||||||
"inputs": {
|
|
||||||
"nixpkgs": [
|
|
||||||
"nur",
|
|
||||||
"nixpkgs"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1733222881,
|
|
||||||
"narHash": "sha256-JIPcz1PrpXUCbaccEnrcUS8jjEb/1vJbZz5KkobyFdM=",
|
|
||||||
"owner": "numtide",
|
|
||||||
"repo": "treefmt-nix",
|
|
||||||
"rev": "49717b5af6f80172275d47a418c9719a31a78b53",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "numtide",
|
|
||||||
"repo": "treefmt-nix",
|
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"root": "root",
|
"root": "root",
|
||||||
|
|||||||
@ -1,4 +1,13 @@
|
|||||||
{ config, lib, inputs, outputs, pkgs, timeZone, system, ... }:
|
{
|
||||||
|
config,
|
||||||
|
lib,
|
||||||
|
inputs,
|
||||||
|
outputs,
|
||||||
|
pkgs,
|
||||||
|
timeZone,
|
||||||
|
system,
|
||||||
|
...
|
||||||
|
}:
|
||||||
let
|
let
|
||||||
supportedDesktops = [ "niri" ];
|
supportedDesktops = [ "niri" ];
|
||||||
supportedDesktopsStr = lib.strings.concatStringsSep ", " supportedDesktops;
|
supportedDesktopsStr = lib.strings.concatStringsSep ", " supportedDesktops;
|
||||||
@ -6,35 +15,36 @@ let
|
|||||||
in
|
in
|
||||||
{
|
{
|
||||||
options.deskCfg = {
|
options.deskCfg = {
|
||||||
de = lib.mkOption {
|
de = lib.mkOption {
|
||||||
default = "";
|
default = "";
|
||||||
type = lib.types.str;
|
type = lib.types.str;
|
||||||
description = "Desktop Environment";
|
description = "Desktop Environment";
|
||||||
};
|
};
|
||||||
userName = lib.mkOption {
|
userName = lib.mkOption {
|
||||||
type = lib.types.str;
|
type = lib.types.str;
|
||||||
description = "Main username for system";
|
description = "Main username for system";
|
||||||
};
|
};
|
||||||
hostName = lib.mkOption {
|
hostName = lib.mkOption {
|
||||||
type = lib.types.str;
|
type = lib.types.str;
|
||||||
description = "Hostname for system";
|
description = "Hostname for system";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
imports = [
|
imports = [
|
||||||
modules/user/main_user.nix
|
modules/user/main_user.nix
|
||||||
modules/niri/niri_conf.nix
|
modules/niri/niri_conf.nix
|
||||||
../shared/modules/system/power_manager.nix
|
modules/colemak-ec.nix
|
||||||
];
|
../shared/modules/system/power_manager.nix
|
||||||
|
];
|
||||||
|
|
||||||
config = {
|
config = {
|
||||||
assertions = [
|
assertions = [
|
||||||
{
|
{
|
||||||
assertion = builtins.elem deskCfg.de supportedDesktops;
|
assertion = builtins.elem deskCfg.de supportedDesktops;
|
||||||
message = "Unsupported desktop environment: ${deskCfg.de}\nSupported DE's: ${supportedDesktopsStr}";
|
message = "Unsupported desktop environment: ${deskCfg.de}\nSupported DE's: ${supportedDesktopsStr}";
|
||||||
}
|
}
|
||||||
];
|
];
|
||||||
|
|
||||||
nixpkgs.overlays = [
|
nixpkgs.overlays = [
|
||||||
inputs.nur.overlays.default
|
inputs.nur.overlays.default
|
||||||
];
|
];
|
||||||
@ -45,20 +55,29 @@ in
|
|||||||
|
|
||||||
# Enable flakes feature
|
# Enable flakes feature
|
||||||
nix.settings.experimental-features = [
|
nix.settings.experimental-features = [
|
||||||
"nix-command" "flakes"
|
"nix-command"
|
||||||
|
"flakes"
|
||||||
];
|
];
|
||||||
nixpkgs.config.allowUnfree = true;
|
nixpkgs.config.allowUnfree = true;
|
||||||
|
|
||||||
boot = {
|
boot = {
|
||||||
plymouth = {
|
plymouth = {
|
||||||
enable = true;
|
enable = true;
|
||||||
theme = "circuit";
|
theme = "framework";
|
||||||
themePackages = with pkgs; [
|
themePackages = [
|
||||||
# By default we would install all themes
|
(pkgs.runCommand "plymouth-framework-theme" { } ''
|
||||||
(adi1090x-plymouth-themes.override {
|
mkdir -p $out/share/plymouth/themes/framework
|
||||||
selected_themes = [ "circuit" "circle_flow" ];
|
cp -r ${./framework-plymouth-theme/framework}/* $out/share/plymouth/themes/framework/
|
||||||
})
|
substituteInPlace $out/share/plymouth/themes/framework/framework.plymouth \
|
||||||
|
--replace-fail "@IMAGEDIR@" "$out/share/plymouth/themes/framework"
|
||||||
|
'')
|
||||||
];
|
];
|
||||||
|
# themePackages = with pkgs; [
|
||||||
|
# # By default we would install all themes
|
||||||
|
# (adi1090x-plymouth-themes.override {
|
||||||
|
# selected_themes = [ "circuit" "circle_flow" ];
|
||||||
|
# })
|
||||||
|
# ];
|
||||||
};
|
};
|
||||||
|
|
||||||
# Enable "Silent Boot"
|
# Enable "Silent Boot"
|
||||||
@ -84,17 +103,17 @@ in
|
|||||||
kernelPackages = pkgs.linuxPackages_latest;
|
kernelPackages = pkgs.linuxPackages_latest;
|
||||||
};
|
};
|
||||||
networking.hostName = deskCfg.hostName; # Define your hostname.
|
networking.hostName = deskCfg.hostName; # Define your hostname.
|
||||||
networking.networkmanager.enable = true; # Easiest to use and most distros use this by default.
|
networking.networkmanager.enable = true; # Easiest to use and most distros use this by default.
|
||||||
networking.wireless.iwd.enable = true;
|
networking.wireless.iwd.enable = true;
|
||||||
|
|
||||||
time.timeZone = timeZone;
|
time.timeZone = timeZone;
|
||||||
|
|
||||||
main_user = {
|
main_user = {
|
||||||
enable = true;
|
enable = true;
|
||||||
userName = deskCfg.userName;
|
userName = deskCfg.userName;
|
||||||
isDesktopUser = true;
|
isDesktopUser = true;
|
||||||
};
|
};
|
||||||
|
|
||||||
power_manager = {
|
power_manager = {
|
||||||
enable = true;
|
enable = true;
|
||||||
};
|
};
|
||||||
@ -118,6 +137,9 @@ in
|
|||||||
# For electron apps in wayland
|
# For electron apps in wayland
|
||||||
environment.sessionVariables.NIXOS_OZONE_WL = "1";
|
environment.sessionVariables.NIXOS_OZONE_WL = "1";
|
||||||
|
|
||||||
|
# auto write colemak-dh to keyboard ec
|
||||||
|
colemakEc.enable = true;
|
||||||
|
|
||||||
services.greetd = {
|
services.greetd = {
|
||||||
enable = true;
|
enable = true;
|
||||||
settings = rec {
|
settings = rec {
|
||||||
@ -128,7 +150,7 @@ in
|
|||||||
default_session = initial_session;
|
default_session = initial_session;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
# For yubioath desktop
|
# For yubioath desktop
|
||||||
services.pcscd.enable = true;
|
services.pcscd.enable = true;
|
||||||
system.stateVersion = "25.05"; # Did you read the comment?
|
system.stateVersion = "25.05"; # Did you read the comment?
|
||||||
|
|||||||
224
frame12/dump-matrix.py
Executable file
@ -0,0 +1,224 @@
|
|||||||
|
#!/usr/bin/env python3
|
||||||
|
"""
|
||||||
|
Dump the full Framework EC keyboard matrix.
|
||||||
|
Reads all matrix positions and prints those with non-zero scancodes.
|
||||||
|
|
||||||
|
Usage:
|
||||||
|
sudo python3 dump-matrix.py
|
||||||
|
# or on NixOS:
|
||||||
|
# nix-shell -p python3 --run 'sudo python3 dump-matrix.py'
|
||||||
|
"""
|
||||||
|
|
||||||
|
import subprocess
|
||||||
|
import sys
|
||||||
|
|
||||||
|
# PS/2 Scan Code Set 2 -> Key name mapping
|
||||||
|
SCANCODE_NAMES = {
|
||||||
|
0x00: "(none)",
|
||||||
|
0x01: "F9",
|
||||||
|
0x03: "F5",
|
||||||
|
0x04: "F3",
|
||||||
|
0x05: "F1",
|
||||||
|
0x06: "F2",
|
||||||
|
0x07: "F12",
|
||||||
|
0x09: "F10",
|
||||||
|
0x0A: "F8",
|
||||||
|
0x0B: "F6",
|
||||||
|
0x0C: "F4",
|
||||||
|
0x0D: "Tab",
|
||||||
|
0x0E: "`",
|
||||||
|
0x11: "L Alt",
|
||||||
|
0x12: "L Shift",
|
||||||
|
0x14: "L Ctrl",
|
||||||
|
0x15: "q",
|
||||||
|
0x16: "1",
|
||||||
|
0x1A: "z",
|
||||||
|
0x1B: "s",
|
||||||
|
0x1C: "a",
|
||||||
|
0x1D: "w",
|
||||||
|
0x1E: "2",
|
||||||
|
0x21: "c",
|
||||||
|
0x22: "x",
|
||||||
|
0x23: "d",
|
||||||
|
0x24: "e",
|
||||||
|
0x25: "4",
|
||||||
|
0x26: "3",
|
||||||
|
0x29: "Space",
|
||||||
|
0x2A: "v",
|
||||||
|
0x2B: "f",
|
||||||
|
0x2C: "t",
|
||||||
|
0x2D: "r",
|
||||||
|
0x2E: "5",
|
||||||
|
0x31: "n",
|
||||||
|
0x32: "b",
|
||||||
|
0x33: "h",
|
||||||
|
0x34: "g",
|
||||||
|
0x35: "y",
|
||||||
|
0x36: "6",
|
||||||
|
0x3A: "m",
|
||||||
|
0x3B: "j",
|
||||||
|
0x3C: "u",
|
||||||
|
0x3D: "7",
|
||||||
|
0x3E: "8",
|
||||||
|
0x41: ",",
|
||||||
|
0x42: "k",
|
||||||
|
0x43: "i",
|
||||||
|
0x44: "o",
|
||||||
|
0x45: "0",
|
||||||
|
0x46: "9",
|
||||||
|
0x49: ".",
|
||||||
|
0x4A: "/",
|
||||||
|
0x4B: "l",
|
||||||
|
0x4C: ";",
|
||||||
|
0x4D: "p",
|
||||||
|
0x4E: "-",
|
||||||
|
0x52: "'",
|
||||||
|
0x54: "[",
|
||||||
|
0x55: "=",
|
||||||
|
0x58: "Caps Lock",
|
||||||
|
0x59: "R Shift",
|
||||||
|
0x5A: "Enter",
|
||||||
|
0x5B: "]",
|
||||||
|
0x5D: "\\",
|
||||||
|
0x66: "Backspace",
|
||||||
|
0x69: "KP 1",
|
||||||
|
0x6B: "KP 4",
|
||||||
|
0x6C: "KP 7",
|
||||||
|
0x70: "KP 0",
|
||||||
|
0x71: "KP .",
|
||||||
|
0x72: "KP 2",
|
||||||
|
0x73: "KP 5",
|
||||||
|
0x74: "KP 6",
|
||||||
|
0x75: "KP 8",
|
||||||
|
0x76: "Esc",
|
||||||
|
0x77: "Num Lock",
|
||||||
|
0x78: "F11",
|
||||||
|
0x79: "KP +",
|
||||||
|
0x7A: "KP 3",
|
||||||
|
0x7B: "KP -",
|
||||||
|
0x7C: "KP *",
|
||||||
|
0x7D: "KP 9",
|
||||||
|
0x7E: "Scroll Lock",
|
||||||
|
0x83: "F7",
|
||||||
|
0xFF: "Fn",
|
||||||
|
# Extended keys (E0 prefix) - stored as 16-bit values
|
||||||
|
0xE011: "R Alt",
|
||||||
|
0xE014: "R Ctrl",
|
||||||
|
0xE01F: "L GUI",
|
||||||
|
0xE027: "R GUI",
|
||||||
|
0xE02F: "Apps/Menu",
|
||||||
|
0xE04A: "KP /",
|
||||||
|
0xE05A: "KP Enter",
|
||||||
|
0xE069: "End",
|
||||||
|
0xE06B: "Left Arrow",
|
||||||
|
0xE06C: "Home",
|
||||||
|
0xE070: "Insert",
|
||||||
|
0xE071: "Delete",
|
||||||
|
0xE072: "Down Arrow",
|
||||||
|
0xE074: "Right Arrow",
|
||||||
|
0xE075: "Up Arrow",
|
||||||
|
0xE07A: "Page Down",
|
||||||
|
0xE07D: "Page Up",
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
def get_scancode_name(code):
|
||||||
|
if code in SCANCODE_NAMES:
|
||||||
|
return SCANCODE_NAMES[code]
|
||||||
|
return f"unknown"
|
||||||
|
|
||||||
|
|
||||||
|
def read_matrix_position(row, col):
|
||||||
|
"""Read the scancode at a given matrix position. Returns the 16-bit scancode."""
|
||||||
|
col_hex = format(col, 'x')
|
||||||
|
cmd = f"ectool raw 0x3E0C d1,d0,b{row:x},b{col_hex},w0"
|
||||||
|
try:
|
||||||
|
result = subprocess.run(
|
||||||
|
cmd.split(),
|
||||||
|
capture_output=True, text=True, timeout=5
|
||||||
|
)
|
||||||
|
output = result.stdout + result.stderr
|
||||||
|
# Parse the response bytes. Look for the "Read XXX bytes" line and
|
||||||
|
# then parse the hex dump that follows.
|
||||||
|
lines = output.strip().split('\n')
|
||||||
|
response_bytes = []
|
||||||
|
reading = False
|
||||||
|
for line in lines:
|
||||||
|
if "Read" in line and "bytes" in line:
|
||||||
|
reading = True
|
||||||
|
continue
|
||||||
|
if reading and '|' in line:
|
||||||
|
# Extract hex bytes before the |
|
||||||
|
hex_part = line.split('|')[0].strip()
|
||||||
|
for byte_str in hex_part.split():
|
||||||
|
if len(byte_str) == 2:
|
||||||
|
try:
|
||||||
|
response_bytes.append(int(byte_str, 16))
|
||||||
|
except ValueError:
|
||||||
|
pass
|
||||||
|
|
||||||
|
# Scancode is at bytes 10-11 (little-endian 16-bit)
|
||||||
|
if len(response_bytes) >= 12:
|
||||||
|
scancode = response_bytes[10] | (response_bytes[11] << 8)
|
||||||
|
return scancode
|
||||||
|
return None
|
||||||
|
except (subprocess.TimeoutExpired, Exception) as e:
|
||||||
|
print(f" Error reading ({row},{col:x}): {e}", file=sys.stderr)
|
||||||
|
return None
|
||||||
|
|
||||||
|
|
||||||
|
def main():
|
||||||
|
if subprocess.os.geteuid() != 0:
|
||||||
|
print("This script must be run as root (sudo).", file=sys.stderr)
|
||||||
|
sys.exit(1)
|
||||||
|
|
||||||
|
# Scan a wide range: rows 0-15, cols 0-15
|
||||||
|
# This covers well beyond the assumed 8x12 matrix
|
||||||
|
max_row = 16
|
||||||
|
max_col = 16
|
||||||
|
|
||||||
|
print(f"Scanning matrix positions ({max_row} rows x {max_col} cols)...")
|
||||||
|
print(f"{'Pos':>8} {'Scancode':>10} Key")
|
||||||
|
print("-" * 40)
|
||||||
|
|
||||||
|
found = []
|
||||||
|
for row in range(max_row):
|
||||||
|
for col in range(max_col):
|
||||||
|
scancode = read_matrix_position(row, col)
|
||||||
|
if scancode is not None and scancode != 0:
|
||||||
|
name = get_scancode_name(scancode)
|
||||||
|
label = f"({row:x},{col:x})"
|
||||||
|
sc_str = f"{scancode:04x}" if scancode > 0xFF else f"{scancode:02x}"
|
||||||
|
print(f"{label:>8} {sc_str:>10} {name}")
|
||||||
|
found.append((row, col, scancode, name))
|
||||||
|
# Print progress on stderr
|
||||||
|
print(f"\r Scanning ({row:x},{col:x})... ", end='', file=sys.stderr, flush=True)
|
||||||
|
|
||||||
|
print("\r ", file=sys.stderr)
|
||||||
|
print("-" * 40)
|
||||||
|
print(f"Found {len(found)} mapped positions.")
|
||||||
|
|
||||||
|
# Print a visual grid
|
||||||
|
print("\n=== Matrix Grid ===")
|
||||||
|
print(f"{'':>6}", end='')
|
||||||
|
for col in range(max_col):
|
||||||
|
print(f" {col:x} ", end='')
|
||||||
|
print()
|
||||||
|
|
||||||
|
for row in range(max_row):
|
||||||
|
print(f" {row:x} ", end='')
|
||||||
|
for col in range(max_col):
|
||||||
|
match = None
|
||||||
|
for r, c, sc, name in found:
|
||||||
|
if r == row and c == col:
|
||||||
|
match = name
|
||||||
|
break
|
||||||
|
if match:
|
||||||
|
print(f" {match:>6}", end='')
|
||||||
|
else:
|
||||||
|
print(f" .", end='')
|
||||||
|
print()
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
main()
|
||||||
21
frame12/framework-plymouth-theme/LICENSE
Normal file
@ -0,0 +1,21 @@
|
|||||||
|
MIT License
|
||||||
|
|
||||||
|
Copyright (c) 2021 Kupke
|
||||||
|
|
||||||
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
|
of this software and associated documentation files (the "Software"), to deal
|
||||||
|
in the Software without restriction, including without limitation the rights
|
||||||
|
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||||
|
copies of the Software, and to permit persons to whom the Software is
|
||||||
|
furnished to do so, subject to the following conditions:
|
||||||
|
|
||||||
|
The above copyright notice and this permission notice shall be included in all
|
||||||
|
copies or substantial portions of the Software.
|
||||||
|
|
||||||
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||||
|
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||||
|
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||||
|
SOFTWARE.
|
||||||
23
frame12/framework-plymouth-theme/README.md
Normal file
@ -0,0 +1,23 @@
|
|||||||
|
# Framework Plymouth Theme
|
||||||
|
|
||||||
|
Theme with animated Framework logo. Inspiration from [KDE Splashscreen](https://github.com/NL-TCH/Frame.Work_SplashScreen-KDE).
|
||||||
|
|
||||||
|
Artwork credit to sniss https://community.frame.work/t/framework-fan-art/6626/39
|
||||||
|
|
||||||
|
## Installation
|
||||||
|
|
||||||
|
Copy the `framework` folder to your Plymouth theme folder (in Fedora, it's `/usr/share/plymouth/themes/`).
|
||||||
|
|
||||||
|
To see if it's in the right spot, you can run `plymouth-set-default-theme -l`
|
||||||
|
|
||||||
|
To set the theme, execute this command:
|
||||||
|
```
|
||||||
|
sudo plymouth-set-default-theme framework -R
|
||||||
|
```
|
||||||
|
|
||||||
|
## Distro Logo
|
||||||
|
|
||||||
|
If you want to add your distro logo to the boot animation screen, insert it as `watermark.png`
|
||||||
|
|
||||||
|
You should be able to reuse your distro's watermark image from one of your existing themes. Fedora image included for reference; just rename `fedora_watermark.png` to `watermark.png` and move it into the `framework` folder.
|
||||||
|
|
||||||
BIN
frame12/framework-plymouth-theme/framework/bullet.png
Normal file
|
After Width: | Height: | Size: 616 B |
BIN
frame12/framework-plymouth-theme/framework/capslock.png
Normal file
|
After Width: | Height: | Size: 960 B |
BIN
frame12/framework-plymouth-theme/framework/entry.png
Normal file
|
After Width: | Height: | Size: 8.8 KiB |
@ -0,0 +1,54 @@
|
|||||||
|
[Plymouth Theme]
|
||||||
|
Name=Framework
|
||||||
|
Description=Theme with animated Framework logo.
|
||||||
|
ModuleName=two-step
|
||||||
|
|
||||||
|
[two-step]
|
||||||
|
Font=Cantarell 12
|
||||||
|
TitleFont=Cantarell Light 30
|
||||||
|
ImageDir=@IMAGEDIR@
|
||||||
|
DialogHorizontalAlignment=.5
|
||||||
|
DialogVerticalAlignment=.382
|
||||||
|
TitleHorizontalAlignment=.5
|
||||||
|
TitleVerticalAlignment=.382
|
||||||
|
HorizontalAlignment=.5
|
||||||
|
VerticalAlignment=.5
|
||||||
|
WatermarkHorizontalAlignment=.5
|
||||||
|
WatermarkVerticalAlignment=.96
|
||||||
|
Transition=none
|
||||||
|
TransitionDuration=0.0
|
||||||
|
BackgroundStartColor=0x000000
|
||||||
|
BackgroundEndColor=0x000000
|
||||||
|
ProgressBarBackgroundColor=0x606060
|
||||||
|
ProgressBarForegroundColor=0xffffff
|
||||||
|
MessageBelowAnimation=true
|
||||||
|
|
||||||
|
[boot-up]
|
||||||
|
UseEndAnimation=false
|
||||||
|
|
||||||
|
[shutdown]
|
||||||
|
UseEndAnimation=false
|
||||||
|
|
||||||
|
[reboot]
|
||||||
|
UseEndAnimation=false
|
||||||
|
|
||||||
|
[updates]
|
||||||
|
SuppressMessages=true
|
||||||
|
ProgressBarShowPercentComplete=true
|
||||||
|
UseProgressBar=true
|
||||||
|
Title=Installing Updates...
|
||||||
|
SubTitle=Do not turn off your computer
|
||||||
|
|
||||||
|
[system-upgrade]
|
||||||
|
SuppressMessages=true
|
||||||
|
ProgressBarShowPercentComplete=true
|
||||||
|
UseProgressBar=true
|
||||||
|
Title=Upgrading System...
|
||||||
|
SubTitle=Do not turn off your computer
|
||||||
|
|
||||||
|
[firmware-upgrade]
|
||||||
|
SuppressMessages=true
|
||||||
|
ProgressBarShowPercentComplete=true
|
||||||
|
UseProgressBar=true
|
||||||
|
Title=Upgrading Firmware...
|
||||||
|
SubTitle=Do not turn off your computer
|
||||||
BIN
frame12/framework-plymouth-theme/framework/keyboard.png
Normal file
|
After Width: | Height: | Size: 946 B |
BIN
frame12/framework-plymouth-theme/framework/keymap-render.png
Normal file
|
After Width: | Height: | Size: 26 KiB |
BIN
frame12/framework-plymouth-theme/framework/lock.png
Normal file
|
After Width: | Height: | Size: 2.0 KiB |
BIN
frame12/framework-plymouth-theme/framework/throbber-0001.png
Normal file
|
After Width: | Height: | Size: 6.1 KiB |
BIN
frame12/framework-plymouth-theme/framework/throbber-0002.png
Normal file
|
After Width: | Height: | Size: 6.1 KiB |
BIN
frame12/framework-plymouth-theme/framework/throbber-0003.png
Normal file
|
After Width: | Height: | Size: 6.1 KiB |
BIN
frame12/framework-plymouth-theme/framework/throbber-0004.png
Normal file
|
After Width: | Height: | Size: 6.1 KiB |
BIN
frame12/framework-plymouth-theme/framework/throbber-0005.png
Normal file
|
After Width: | Height: | Size: 6.1 KiB |
BIN
frame12/framework-plymouth-theme/framework/throbber-0006.png
Normal file
|
After Width: | Height: | Size: 6.1 KiB |
BIN
frame12/framework-plymouth-theme/framework/throbber-0007.png
Normal file
|
After Width: | Height: | Size: 6.1 KiB |
BIN
frame12/framework-plymouth-theme/framework/throbber-0008.png
Normal file
|
After Width: | Height: | Size: 6.1 KiB |
BIN
frame12/framework-plymouth-theme/framework/throbber-0009.png
Normal file
|
After Width: | Height: | Size: 6.1 KiB |
BIN
frame12/framework-plymouth-theme/framework/throbber-0010.png
Normal file
|
After Width: | Height: | Size: 6.1 KiB |
BIN
frame12/framework-plymouth-theme/framework/throbber-0011.png
Normal file
|
After Width: | Height: | Size: 6.1 KiB |
BIN
frame12/framework-plymouth-theme/framework/throbber-0012.png
Normal file
|
After Width: | Height: | Size: 6.1 KiB |
BIN
frame12/framework-plymouth-theme/framework/throbber-0013.png
Normal file
|
After Width: | Height: | Size: 6.1 KiB |
BIN
frame12/framework-plymouth-theme/framework/throbber-0014.png
Normal file
|
After Width: | Height: | Size: 6.1 KiB |
BIN
frame12/framework-plymouth-theme/framework/throbber-0015.png
Normal file
|
After Width: | Height: | Size: 6.3 KiB |
BIN
frame12/framework-plymouth-theme/framework/throbber-0016.png
Normal file
|
After Width: | Height: | Size: 6.4 KiB |
BIN
frame12/framework-plymouth-theme/framework/throbber-0017.png
Normal file
|
After Width: | Height: | Size: 6.5 KiB |
BIN
frame12/framework-plymouth-theme/framework/throbber-0018.png
Normal file
|
After Width: | Height: | Size: 6.6 KiB |
BIN
frame12/framework-plymouth-theme/framework/throbber-0019.png
Normal file
|
After Width: | Height: | Size: 6.6 KiB |
BIN
frame12/framework-plymouth-theme/framework/throbber-0020.png
Normal file
|
After Width: | Height: | Size: 6.6 KiB |
BIN
frame12/framework-plymouth-theme/framework/throbber-0021.png
Normal file
|
After Width: | Height: | Size: 6.6 KiB |
BIN
frame12/framework-plymouth-theme/framework/throbber-0022.png
Normal file
|
After Width: | Height: | Size: 6.7 KiB |
BIN
frame12/framework-plymouth-theme/framework/throbber-0023.png
Normal file
|
After Width: | Height: | Size: 6.7 KiB |
BIN
frame12/framework-plymouth-theme/framework/throbber-0024.png
Normal file
|
After Width: | Height: | Size: 6.7 KiB |
BIN
frame12/framework-plymouth-theme/framework/throbber-0025.png
Normal file
|
After Width: | Height: | Size: 6.7 KiB |
BIN
frame12/framework-plymouth-theme/framework/throbber-0026.png
Normal file
|
After Width: | Height: | Size: 6.7 KiB |
BIN
frame12/framework-plymouth-theme/framework/throbber-0027.png
Normal file
|
After Width: | Height: | Size: 6.7 KiB |
BIN
frame12/framework-plymouth-theme/framework/throbber-0028.png
Normal file
|
After Width: | Height: | Size: 6.7 KiB |
BIN
frame12/framework-plymouth-theme/framework/throbber-0029.png
Normal file
|
After Width: | Height: | Size: 6.7 KiB |
BIN
frame12/framework-plymouth-theme/framework/throbber-0030.png
Normal file
|
After Width: | Height: | Size: 6.7 KiB |
BIN
frame12/framework-plymouth-theme/framework/throbber-0031.png
Normal file
|
After Width: | Height: | Size: 6.7 KiB |
BIN
frame12/framework-plymouth-theme/framework/throbber-0032.png
Normal file
|
After Width: | Height: | Size: 6.7 KiB |
BIN
frame12/framework-plymouth-theme/framework/throbber-0033.png
Normal file
|
After Width: | Height: | Size: 6.7 KiB |
BIN
frame12/framework-plymouth-theme/framework/throbber-0034.png
Normal file
|
After Width: | Height: | Size: 6.7 KiB |
BIN
frame12/framework-plymouth-theme/framework/throbber-0035.png
Normal file
|
After Width: | Height: | Size: 6.7 KiB |
BIN
frame12/framework-plymouth-theme/framework/throbber-0036.png
Normal file
|
After Width: | Height: | Size: 6.7 KiB |
BIN
frame12/framework-plymouth-theme/framework/throbber-0037.png
Normal file
|
After Width: | Height: | Size: 6.7 KiB |
BIN
frame12/framework-plymouth-theme/framework/throbber-0038.png
Normal file
|
After Width: | Height: | Size: 6.7 KiB |
BIN
frame12/framework-plymouth-theme/framework/throbber-0039.png
Normal file
|
After Width: | Height: | Size: 6.7 KiB |
BIN
frame12/framework-plymouth-theme/framework/throbber-0040.png
Normal file
|
After Width: | Height: | Size: 6.8 KiB |
BIN
frame12/framework-plymouth-theme/framework/throbber-0041.png
Normal file
|
After Width: | Height: | Size: 6.7 KiB |
BIN
frame12/framework-plymouth-theme/framework/throbber-0042.png
Normal file
|
After Width: | Height: | Size: 6.8 KiB |
BIN
frame12/framework-plymouth-theme/framework/throbber-0043.png
Normal file
|
After Width: | Height: | Size: 6.8 KiB |
BIN
frame12/framework-plymouth-theme/framework/throbber-0044.png
Normal file
|
After Width: | Height: | Size: 6.8 KiB |
BIN
frame12/framework-plymouth-theme/framework/throbber-0045.png
Normal file
|
After Width: | Height: | Size: 6.8 KiB |
BIN
frame12/framework-plymouth-theme/framework/throbber-0046.png
Normal file
|
After Width: | Height: | Size: 6.8 KiB |
BIN
frame12/framework-plymouth-theme/framework/throbber-0047.png
Normal file
|
After Width: | Height: | Size: 6.6 KiB |
BIN
frame12/framework-plymouth-theme/framework/throbber-0048.png
Normal file
|
After Width: | Height: | Size: 6.5 KiB |
BIN
frame12/framework-plymouth-theme/framework/throbber-0049.png
Normal file
|
After Width: | Height: | Size: 6.7 KiB |
BIN
frame12/framework-plymouth-theme/framework/throbber-0050.png
Normal file
|
After Width: | Height: | Size: 7.1 KiB |
BIN
frame12/framework-plymouth-theme/framework/throbber-0051.png
Normal file
|
After Width: | Height: | Size: 7.3 KiB |
BIN
frame12/framework-plymouth-theme/framework/throbber-0052.png
Normal file
|
After Width: | Height: | Size: 7.4 KiB |
BIN
frame12/framework-plymouth-theme/framework/throbber-0053.png
Normal file
|
After Width: | Height: | Size: 7.4 KiB |
BIN
frame12/framework-plymouth-theme/framework/throbber-0054.png
Normal file
|
After Width: | Height: | Size: 7.5 KiB |
BIN
frame12/framework-plymouth-theme/framework/throbber-0055.png
Normal file
|
After Width: | Height: | Size: 7.4 KiB |
BIN
frame12/framework-plymouth-theme/framework/throbber-0056.png
Normal file
|
After Width: | Height: | Size: 7.3 KiB |
BIN
frame12/framework-plymouth-theme/framework/throbber-0057.png
Normal file
|
After Width: | Height: | Size: 7.3 KiB |
BIN
frame12/framework-plymouth-theme/framework/throbber-0058.png
Normal file
|
After Width: | Height: | Size: 7.3 KiB |
BIN
frame12/framework-plymouth-theme/framework/throbber-0059.png
Normal file
|
After Width: | Height: | Size: 7.2 KiB |
BIN
frame12/framework-plymouth-theme/framework/throbber-0060.png
Normal file
|
After Width: | Height: | Size: 7.2 KiB |
BIN
frame12/framework-plymouth-theme/framework/throbber-0061.png
Normal file
|
After Width: | Height: | Size: 7.3 KiB |
BIN
frame12/framework-plymouth-theme/framework/throbber-0062.png
Normal file
|
After Width: | Height: | Size: 7.3 KiB |
BIN
frame12/framework-plymouth-theme/framework/throbber-0063.png
Normal file
|
After Width: | Height: | Size: 7.3 KiB |
BIN
frame12/framework-plymouth-theme/framework/throbber-0064.png
Normal file
|
After Width: | Height: | Size: 7.3 KiB |
BIN
frame12/framework-plymouth-theme/framework/throbber-0065.png
Normal file
|
After Width: | Height: | Size: 7.4 KiB |
BIN
frame12/framework-plymouth-theme/framework/throbber-0066.png
Normal file
|
After Width: | Height: | Size: 7.4 KiB |
BIN
frame12/framework-plymouth-theme/framework/throbber-0067.png
Normal file
|
After Width: | Height: | Size: 7.4 KiB |
BIN
frame12/framework-plymouth-theme/framework/throbber-0068.png
Normal file
|
After Width: | Height: | Size: 7.4 KiB |
BIN
frame12/framework-plymouth-theme/framework/throbber-0069.png
Normal file
|
After Width: | Height: | Size: 7.5 KiB |
BIN
frame12/framework-plymouth-theme/framework/throbber-0070.png
Normal file
|
After Width: | Height: | Size: 7.4 KiB |
BIN
frame12/framework-plymouth-theme/framework/throbber-0071.png
Normal file
|
After Width: | Height: | Size: 7.5 KiB |
BIN
frame12/framework-plymouth-theme/framework/throbber-0072.png
Normal file
|
After Width: | Height: | Size: 7.4 KiB |
BIN
frame12/framework-plymouth-theme/framework/throbber-0073.png
Normal file
|
After Width: | Height: | Size: 7.4 KiB |
BIN
frame12/framework-plymouth-theme/framework/throbber-0074.png
Normal file
|
After Width: | Height: | Size: 7.4 KiB |
BIN
frame12/framework-plymouth-theme/framework/throbber-0075.png
Normal file
|
After Width: | Height: | Size: 7.5 KiB |
BIN
frame12/framework-plymouth-theme/framework/throbber-0076.png
Normal file
|
After Width: | Height: | Size: 7.5 KiB |
BIN
frame12/framework-plymouth-theme/framework/throbber-0077.png
Normal file
|
After Width: | Height: | Size: 7.5 KiB |
BIN
frame12/framework-plymouth-theme/framework/throbber-0078.png
Normal file
|
After Width: | Height: | Size: 7.5 KiB |
BIN
frame12/framework-plymouth-theme/framework/throbber-0079.png
Normal file
|
After Width: | Height: | Size: 7.5 KiB |
BIN
frame12/framework-plymouth-theme/framework/throbber-0080.png
Normal file
|
After Width: | Height: | Size: 7.5 KiB |
BIN
frame12/framework-plymouth-theme/framework/throbber-0081.png
Normal file
|
After Width: | Height: | Size: 7.5 KiB |
BIN
frame12/framework-plymouth-theme/framework/throbber-0082.png
Normal file
|
After Width: | Height: | Size: 7.5 KiB |
BIN
frame12/framework-plymouth-theme/framework/throbber-0083.png
Normal file
|
After Width: | Height: | Size: 7.4 KiB |
BIN
frame12/framework-plymouth-theme/framework/throbber-0084.png
Normal file
|
After Width: | Height: | Size: 7.3 KiB |
BIN
frame12/framework-plymouth-theme/framework/throbber-0085.png
Normal file
|
After Width: | Height: | Size: 7.4 KiB |
BIN
frame12/framework-plymouth-theme/framework/throbber-0086.png
Normal file
|
After Width: | Height: | Size: 7.5 KiB |