Merge branch 'master' of coastalcommits.com:cswimr/flake
This commit is contained in:
commit
543c46af11
14 changed files with 237 additions and 95 deletions
3
.envrc
Normal file
3
.envrc
Normal file
|
@ -0,0 +1,3 @@
|
||||||
|
# make this point to wherever your own es25519 ssh key is
|
||||||
|
SOPS_AGE_KEY=$(ssh-to-age -i ~/.ssh/id_ed25519 -private-key)
|
||||||
|
export SOPS_AGE_KEY
|
7
.sops.yml
Normal file
7
.sops.yml
Normal file
|
@ -0,0 +1,7 @@
|
||||||
|
keys:
|
||||||
|
- $eclipse age1q9f9zhkfjn2c3a8qtmfqh0rtls3542jukqpt7t93jca6hc947f3sm9ujhx
|
||||||
|
creation_rules:
|
||||||
|
- path_regex: secrets/[^/]+\.(yaml|json|env|ini|sops)$
|
||||||
|
key_groups:
|
||||||
|
- age:
|
||||||
|
- *eclipse
|
BIN
assets/img/grub/menu.png
Normal file
BIN
assets/img/grub/menu.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 581 B |
|
@ -1,14 +1,26 @@
|
||||||
from os.path import dirname
|
from os.path import dirname
|
||||||
|
from os import environ
|
||||||
from pathlib import Path
|
from pathlib import Path
|
||||||
import subprocess
|
import subprocess
|
||||||
|
from socket import gethostname
|
||||||
import colors
|
import colors
|
||||||
|
|
||||||
def run(cmd: list[str], cwd: Path = Path.cwd(), **kwargs) -> subprocess.CompletedProcess:
|
def format_link(link: str, text: str) -> str:
|
||||||
|
return f"\033]8;;{link}\033\\{text}\033]8;;\033\\"
|
||||||
|
|
||||||
|
def run(cmd: list[str], cwd: Path = Path.cwd(), exit_on_error: bool = True, **kwargs) -> subprocess.CompletedProcess:
|
||||||
c = colors.Colors
|
c = colors.Colors
|
||||||
print(f"{c.GREEN}Running command: {c.RED}'{' '.join(cmd)}'{c.END}")
|
print(f"{c.GREEN}Running command: {c.PURPLE}'{' '.join(cmd)}'{c.END}")
|
||||||
if cwd != Path.cwd():
|
if cwd != Path.cwd():
|
||||||
print(f"{c.GREEN} in directory: {c.YELLOW}'{cwd}'{c.END}")
|
print(f"{c.GREEN} in directory: {c.YELLOW}'{format_link(link="file://" + str(cwd), text=cwd)}'{c.END}")
|
||||||
return subprocess.run(cmd, cwd=cwd, check=True, **kwargs)
|
result = subprocess.run(cmd, cwd=cwd, check=False, **kwargs)
|
||||||
|
if result.returncode != 0:
|
||||||
|
print(f"{c.RED}Command exited with non-zero exit code {c.CYAN}{c.BOLD}{result.returncode}{c.END}")
|
||||||
|
if exit_on_error is True:
|
||||||
|
result.check_returncode()
|
||||||
|
else:
|
||||||
|
print(f"{c.GREEN}Command exited with exit code {c.CYAN}{c.BOLD}{result.returncode}{c.END}")
|
||||||
|
return result
|
||||||
|
|
||||||
@aliases.register
|
@aliases.register
|
||||||
@aliases.return_command
|
@aliases.return_command
|
||||||
|
@ -28,19 +40,54 @@ def _vm(args):
|
||||||
c = colors.Colors
|
c = colors.Colors
|
||||||
print(f"{c.BLUE}Building virtual machine {c.YELLOW}{vm_name}{c.END}")
|
print(f"{c.BLUE}Building virtual machine {c.YELLOW}{vm_name}{c.END}")
|
||||||
run(["nixos-rebuild", "build-vm", "-I", "nixos-config=./default.nix", *build_vm_args, "--no-flake"], cwd=vm_path)
|
run(["nixos-rebuild", "build-vm", "-I", "nixos-config=./default.nix", *build_vm_args, "--no-flake"], cwd=vm_path)
|
||||||
print(f"{c.BLUE}Running virtual vachine {c.YELLOW}{vm_name}{c.END}")
|
print(f"{c.BLUE}Starting virtual vachine {c.YELLOW}{vm_name}{c.END}")
|
||||||
run(["./result/bin/run-nixos-vm"], cwd=vm_path)
|
run(["./result/bin/run-nixos-vm"], cwd=vm_path)
|
||||||
print(f"{c.BLUE}Virtual machine {c.YELLOW}{vm_name} {c.BLUE}has {c.RED}stopped.{c.END}")
|
print(f"{c.BLUE}Virtual machine {c.YELLOW}{vm_name} {c.BLUE}has {c.RED}stopped.{c.END}")
|
||||||
else:
|
else:
|
||||||
raise FileNotFoundError(f"Virtual machine {vm_name} does not exist.")
|
raise FileNotFoundError(f"Virtual machine {vm_name} does not exist.")
|
||||||
|
|
||||||
|
@aliases.register
|
||||||
|
def _upd(args: list):
|
||||||
|
path = Path("/etc/nixos")
|
||||||
|
if path.exists():
|
||||||
|
c = colors.Colors
|
||||||
|
print(f"{c.BLUE}Updating {c.YELLOW}NixOS{c.BLUE} hardware configuration file for {c.YELLOW}{gethostname()}{c.BLUE}{c.END}")
|
||||||
|
run(["sudo", "nixos-generate-config", "--dir", ".",], cwd=path / "hosts")
|
||||||
|
print(f"{c.BLUE}Deleting redundant {c.YELLOW}NixOS{c.BLUE} configuration file{c.END}")
|
||||||
|
run(["sudo", "rm", "configuration.nix"], cwd=path / "hosts")
|
||||||
|
print(f"{c.BLUE}Moving {c.YELLOW}NixOS{c.BLUE} hardware configuration file{c.END}")
|
||||||
|
run(["sudo", "mv", "hardware-configuration.nix", "{hostname}.nix".format(hostname=gethostname())], cwd=path / "hosts")
|
||||||
|
print(f"{c.BLUE}Adding {c.YELLOW}NixOS{c.BLUE} hardware configuration file for {c.YELLOW}{gethostname()}{c.BLUE} to git{c.END}")
|
||||||
|
run(["git", "add", "hosts/{hostname}.nix".format(hostname=gethostname())], cwd=path)
|
||||||
|
print(f"{c.BLUE}Deleting {c.YELLOW}Visual Studio Code{c.BLUE} user settings backup file{c.END}")
|
||||||
|
run(["rm", ".config/Code/User/settings.json.bak"], exit_on_error=False, cwd="/home/cswimr")
|
||||||
|
if "--purge-vscode-extensions" in args:
|
||||||
|
args.remove("--purge-vscode-extensions")
|
||||||
|
print(f"{c.BLUE}Killing {c.YELLOW}Visual Studio Code{c.BLUE} processes{c.END}")
|
||||||
|
run(["killall", "code"])
|
||||||
|
print(f"{c.BLUE}Purging {c.YELLOW}Visual Studio Code{c.BLUE} extensions{c.END}")
|
||||||
|
run(["rm", "-rf", ".vscode/extensions"], cwd="/home/cswimr")
|
||||||
|
print(f"{c.BLUE}Rebuilding {c.YELLOW}NixOS{c.BLUE} configuration{c.END}")
|
||||||
|
#TODO: Remove --impure once the Starship module is merged - see ../../nixos/shell.nix for more information
|
||||||
|
args.append("--impure")
|
||||||
|
if "--impure" in args:
|
||||||
|
print(f"{c.RED}WARNING: The --impure flag is set!{c.END}")
|
||||||
|
run(["sudo", "nixos-rebuild", "switch", *args], cwd=path)
|
||||||
|
|
||||||
|
@aliases.register
|
||||||
|
def _lock(args):
|
||||||
|
path = Path("/etc/nixos")
|
||||||
|
if path.exists():
|
||||||
|
c = colors.Colors
|
||||||
|
print(f"{c.BLUE}Updating {c.YELLOW}Nix Flake{c.BLUE} lock file{c.END}")
|
||||||
|
run(["nix", "flake", "update", *args], cwd=path)
|
||||||
|
|
||||||
@aliases.register
|
@aliases.register
|
||||||
@aliases.return_command
|
@aliases.return_command
|
||||||
def _edit(args):
|
def _edit(args):
|
||||||
if not args:
|
if not args:
|
||||||
args = ["."]
|
args = ["."]
|
||||||
if "$SSH_CONNECTION":
|
if environ.get("SSH_CONNECTION") is not None:
|
||||||
return ["$EDITOR", *args]
|
return ["$EDITOR", *args]
|
||||||
return ["$VISUAL", *args]
|
return ["$VISUAL", *args]
|
||||||
|
|
||||||
|
@ -71,13 +118,6 @@ alias_dictionary = {
|
||||||
"nixpkgs-update": "nix run --option extra-substituters 'https://nix-community.cachix.org/' --option extra-trusted-public-keys 'nix-community.cachix.org-1:mB9FSh9qf2dCimDSUo8Zy7bkq5CX+/rkCWyvRCYg3Fs=' github:ryantm/nixpkgs-update --",
|
"nixpkgs-update": "nix run --option extra-substituters 'https://nix-community.cachix.org/' --option extra-trusted-public-keys 'nix-community.cachix.org-1:mB9FSh9qf2dCimDSUo8Zy7bkq5CX+/rkCWyvRCYg3Fs=' github:ryantm/nixpkgs-update --",
|
||||||
"nixrc": "edit /etc/nixos",
|
"nixrc": "edit /etc/nixos",
|
||||||
|
|
||||||
"upd": '''sudo nixos-generate-config --dir /etc/nixos/hosts and \
|
|
||||||
sudo rm /etc/nixos/hosts/configuration.nix and \
|
|
||||||
sudo mv /etc/nixos/hosts/hardware-configuration.nix /etc/nixos/hosts/@($HOSTNAME).nix \
|
|
||||||
and git -C /etc/nixos --git-dir=/etc/nixos/.git add /etc/nixos/hosts/@($HOSTNAME).nix and \
|
|
||||||
rm -rf ~/.config/Code/User/settings.json.bak and \
|
|
||||||
sudo nixos-rebuild switch --flake /etc/nixos --impure @($args)''', #TODO: Remove --impure once the Starship module is merged - see ../../nixos/shell.nix for more information
|
|
||||||
|
|
||||||
"taildrop": "tailscale file",
|
"taildrop": "tailscale file",
|
||||||
|
|
||||||
"forgejo-runner": "act_runner",
|
"forgejo-runner": "act_runner",
|
||||||
|
|
86
flake.lock
86
flake.lock
|
@ -1,20 +1,5 @@
|
||||||
{
|
{
|
||||||
"nodes": {
|
"nodes": {
|
||||||
"catppuccin": {
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1731232837,
|
|
||||||
"narHash": "sha256-0aIwr/RC/oe7rYkfJb47xjdEQDSNcqpFGsEa+EPlDEs=",
|
|
||||||
"owner": "catppuccin",
|
|
||||||
"repo": "nix",
|
|
||||||
"rev": "32359bf226fe874d3b7a0a5753d291a4da9616fe",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "catppuccin",
|
|
||||||
"repo": "nix",
|
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"catppuccin-vsc": {
|
"catppuccin-vsc": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"nixpkgs": "nixpkgs"
|
"nixpkgs": "nixpkgs"
|
||||||
|
@ -40,11 +25,11 @@
|
||||||
"onchg": "onchg"
|
"onchg": "onchg"
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1728874779,
|
"lastModified": 1732416782,
|
||||||
"narHash": "sha256-498cQTDaU7bU3CbWPCQgSGkV25T8sZQmMwhU58WkIXE=",
|
"narHash": "sha256-evu/J6D79rlQ6oYtKgZxpWvT6ORt0SH573R6IOIS6R0=",
|
||||||
"owner": "aksiksi",
|
"owner": "aksiksi",
|
||||||
"repo": "compose2nix",
|
"repo": "compose2nix",
|
||||||
"rev": "07cad037b8887ba94cd7236ffd1a8ee47002a9fe",
|
"rev": "a81c2e5e485c722e74dce7c8e308c7b0a1381854",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
|
@ -193,11 +178,11 @@
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1731363552,
|
"lastModified": 1732021966,
|
||||||
"narHash": "sha256-vFta1uHnD29VUY4HJOO/D6p6rxyObnf+InnSMT4jlMU=",
|
"narHash": "sha256-mnTbjpdqF0luOkou8ZFi2asa1N3AA2CchR/RqCNmsGE=",
|
||||||
"owner": "cachix",
|
"owner": "cachix",
|
||||||
"repo": "git-hooks.nix",
|
"repo": "git-hooks.nix",
|
||||||
"rev": "cd1af27aa85026ac759d5d3fccf650abe7e1bbf0",
|
"rev": "3308484d1a443fc5bc92012435d79e80458fe43c",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
|
@ -235,11 +220,11 @@
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1731604581,
|
"lastModified": 1732793095,
|
||||||
"narHash": "sha256-Qq2YZZaDTB3FZLWU/Hgh1uuWlUBl3cMLGB99bm7rFUM=",
|
"narHash": "sha256-6TrknJ8CpvSSF4gviQSeD+wyj3siRcMvdBKhOXkEMKU=",
|
||||||
"owner": "nix-community",
|
"owner": "nix-community",
|
||||||
"repo": "home-manager",
|
"repo": "home-manager",
|
||||||
"rev": "1d0862ee2d7c6f6cd720d6f32213fa425004be10",
|
"rev": "2f7739d01080feb4549524e8f6927669b61c6ee3",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
|
@ -257,11 +242,11 @@
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1731887066,
|
"lastModified": 1732482255,
|
||||||
"narHash": "sha256-uw7K/RsYioJicV79Nl39yjtfhdfTDU2aRxnBgvFhkZ8=",
|
"narHash": "sha256-GUffLwzawz5WRVfWaWCg78n/HrBJrOG7QadFY6rtV8A=",
|
||||||
"owner": "nix-community",
|
"owner": "nix-community",
|
||||||
"repo": "home-manager",
|
"repo": "home-manager",
|
||||||
"rev": "f3a2ff69586f3a54b461526e5702b1a2f81e740a",
|
"rev": "a9953635d7f34e7358d5189751110f87e3ac17da",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
|
@ -306,11 +291,11 @@
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1731885500,
|
"lastModified": 1732603785,
|
||||||
"narHash": "sha256-ZrztYfSOS33J+ewq5alBOSdnIyZ0/sr1iy7FyBe9zIg=",
|
"narHash": "sha256-AEjWTJwOmSnVYsSJCojKgoguGfFfwel6z/6ud6UFMU8=",
|
||||||
"owner": "lnl7",
|
"owner": "lnl7",
|
||||||
"repo": "nix-darwin",
|
"repo": "nix-darwin",
|
||||||
"rev": "c60b5c924c6188a0b3ca2e139ead3d0f92ae5db5",
|
"rev": "6ab87b7c84d4ee873e937108c4ff80c015a40c7a",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
|
@ -364,11 +349,11 @@
|
||||||
"nixpkgs": "nixpkgs_2"
|
"nixpkgs": "nixpkgs_2"
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1731981189,
|
"lastModified": 1732758864,
|
||||||
"narHash": "sha256-EnDFNJq3CuPLZ+3BxGDAqIckbK5pBkUFt3nqLafni4o=",
|
"narHash": "sha256-j5UQ6smTs0UaoGG8jTsnsLCyjBp143v7Hrx3Yu6JV1g=",
|
||||||
"owner": "nix-community",
|
"owner": "nix-community",
|
||||||
"repo": "nix-vscode-extensions",
|
"repo": "nix-vscode-extensions",
|
||||||
"rev": "6f1845dd71ddeb7463856750c5e0cb6c122bb87a",
|
"rev": "c819590b4790a0a4831f96ebff0443b06f374e57",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
|
@ -411,11 +396,11 @@
|
||||||
},
|
},
|
||||||
"nixpkgs_3": {
|
"nixpkgs_3": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1731319897,
|
"lastModified": 1732521221,
|
||||||
"narHash": "sha256-PbABj4tnbWFMfBp6OcUK5iGy1QY+/Z96ZcLpooIbuEI=",
|
"narHash": "sha256-2ThgXBUXAE1oFsVATK1ZX9IjPcS4nKFOAjhPNKuiMn0=",
|
||||||
"owner": "NixOS",
|
"owner": "NixOS",
|
||||||
"repo": "nixpkgs",
|
"repo": "nixpkgs",
|
||||||
"rev": "dc460ec76cbff0e66e269457d7b728432263166c",
|
"rev": "4633a7c72337ea8fd23a4f2ba3972865e3ec685d",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
|
@ -427,15 +412,15 @@
|
||||||
},
|
},
|
||||||
"nixpkgs_4": {
|
"nixpkgs_4": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1731676054,
|
"lastModified": 1732521221,
|
||||||
"narHash": "sha256-OZiZ3m8SCMfh3B6bfGC/Bm4x3qc1m2SVEAlkV6iY7Yg=",
|
"narHash": "sha256-2ThgXBUXAE1oFsVATK1ZX9IjPcS4nKFOAjhPNKuiMn0=",
|
||||||
"owner": "NixOS",
|
"owner": "nixos",
|
||||||
"repo": "nixpkgs",
|
"repo": "nixpkgs",
|
||||||
"rev": "5e4fbfb6b3de1aa2872b76d49fafc942626e2add",
|
"rev": "4633a7c72337ea8fd23a4f2ba3972865e3ec685d",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
"owner": "NixOS",
|
"owner": "nixos",
|
||||||
"ref": "nixos-unstable",
|
"ref": "nixos-unstable",
|
||||||
"repo": "nixpkgs",
|
"repo": "nixpkgs",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
|
@ -456,11 +441,11 @@
|
||||||
"treefmt-nix": "treefmt-nix"
|
"treefmt-nix": "treefmt-nix"
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1732035679,
|
"lastModified": 1732726573,
|
||||||
"narHash": "sha256-J03v1XnxvsrrvHmzKVBZiwik8678IXfkH1/ZR954ujk=",
|
"narHash": "sha256-gvCPgtcXGf/GZaJBHYrXuM5r2pFRG3VDr7uOb7B1748=",
|
||||||
"owner": "nix-community",
|
"owner": "nix-community",
|
||||||
"repo": "nixvim",
|
"repo": "nixvim",
|
||||||
"rev": "929bb0cd1cffb9917ab14be9cdb3f27efd6f505f",
|
"rev": "fc9178d124eba824f1862513314d351784e1a84c",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
|
@ -516,7 +501,6 @@
|
||||||
},
|
},
|
||||||
"root": {
|
"root": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"catppuccin": "catppuccin",
|
|
||||||
"catppuccin-vsc": "catppuccin-vsc",
|
"catppuccin-vsc": "catppuccin-vsc",
|
||||||
"compose2nix": "compose2nix",
|
"compose2nix": "compose2nix",
|
||||||
"home-manager": "home-manager",
|
"home-manager": "home-manager",
|
||||||
|
@ -565,11 +549,11 @@
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1731944360,
|
"lastModified": 1732643199,
|
||||||
"narHash": "sha256-sJxPh+V0vUkBhlA58ok/y0o96AtfqiEF0O8qsdolI6o=",
|
"narHash": "sha256-uI7TXEb231o8dkwB5AUCecx3AQtosRmL6hKgnckvjps=",
|
||||||
"owner": "numtide",
|
"owner": "numtide",
|
||||||
"repo": "treefmt-nix",
|
"repo": "treefmt-nix",
|
||||||
"rev": "579b9a2fd0020cd9cd81a4ef4eab2dca4d20c94c",
|
"rev": "84637a7ab04179bdc42aa8fd0af1909fba76ad0c",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
|
@ -583,11 +567,11 @@
|
||||||
"nixpkgs": "nixpkgs_4"
|
"nixpkgs": "nixpkgs_4"
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1731689384,
|
"lastModified": 1732785687,
|
||||||
"narHash": "sha256-L1Aabt+k92BvxH1h/B6SwVwDtglPtQ0yBbSNm3wfUGw=",
|
"narHash": "sha256-dkh/Ff2nxZvMdRnkUq+mo8I1IOk/ASjBM7HEanKV290=",
|
||||||
"owner": "0xc000022070",
|
"owner": "0xc000022070",
|
||||||
"repo": "zen-browser-flake",
|
"repo": "zen-browser-flake",
|
||||||
"rev": "9808c80cb90626f0b3f6a58b36892c44daaf24bd",
|
"rev": "a1c38bb83c32339b1b0ee6a3f740c0dd677d43be",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
|
|
17
flake.nix
17
flake.nix
|
@ -11,7 +11,6 @@
|
||||||
url = "github:nix-community/nixvim";
|
url = "github:nix-community/nixvim";
|
||||||
inputs.nixpkgs.follows = "nixpkgs";
|
inputs.nixpkgs.follows = "nixpkgs";
|
||||||
};
|
};
|
||||||
catppuccin.url = "github:catppuccin/nix";
|
|
||||||
compose2nix = {
|
compose2nix = {
|
||||||
url = "github:aksiksi/compose2nix";
|
url = "github:aksiksi/compose2nix";
|
||||||
inputs.nixpkgs.follows = "nixpkgs";
|
inputs.nixpkgs.follows = "nixpkgs";
|
||||||
|
@ -65,16 +64,6 @@
|
||||||
inputs.nixvim.nixosModules.nixvim
|
inputs.nixvim.nixosModules.nixvim
|
||||||
inputs.nix-flatpak.nixosModules.nix-flatpak
|
inputs.nix-flatpak.nixosModules.nix-flatpak
|
||||||
|
|
||||||
# Catppuccin theme
|
|
||||||
inputs.catppuccin.nixosModules.catppuccin
|
|
||||||
{
|
|
||||||
catppuccin.enable = true;
|
|
||||||
catppuccin.flavor = "mocha";
|
|
||||||
catppuccin.accent = "blue";
|
|
||||||
boot.loader.grub.catppuccin.enable = true;
|
|
||||||
services.displayManager.sddm.catppuccin.enable = false;
|
|
||||||
}
|
|
||||||
|
|
||||||
# Home Manager
|
# Home Manager
|
||||||
home-manager.nixosModules.home-manager
|
home-manager.nixosModules.home-manager
|
||||||
{
|
{
|
||||||
|
@ -92,12 +81,6 @@
|
||||||
imports = [
|
imports = [
|
||||||
./home-manager/cswimr.nix
|
./home-manager/cswimr.nix
|
||||||
./home-manager/vscode.nix
|
./home-manager/vscode.nix
|
||||||
inputs.catppuccin.homeManagerModules.catppuccin
|
|
||||||
{
|
|
||||||
catppuccin.enable = true;
|
|
||||||
catppuccin.flavor = "mocha";
|
|
||||||
catppuccin.accent = "blue";
|
|
||||||
}
|
|
||||||
{
|
{
|
||||||
programs.git.extraConfig.user.signingkey = "0EC431A8DA8F8087";
|
programs.git.extraConfig.user.signingkey = "0EC431A8DA8F8087";
|
||||||
}
|
}
|
||||||
|
|
79
home-manager/plasma.nix
Normal file
79
home-manager/plasma.nix
Normal file
|
@ -0,0 +1,79 @@
|
||||||
|
{
|
||||||
|
imports = [ <plasma-manager/modules> ];
|
||||||
|
programs.plasma = {
|
||||||
|
enable = true;
|
||||||
|
panels = [{
|
||||||
|
location = "bottom";
|
||||||
|
screen = "all";
|
||||||
|
wigets = [
|
||||||
|
{
|
||||||
|
kickoff = {
|
||||||
|
sortAlphabetically = true;
|
||||||
|
icon = "nix-snowflake";
|
||||||
|
};
|
||||||
|
}
|
||||||
|
{
|
||||||
|
iconTasks = {
|
||||||
|
launchers = [
|
||||||
|
"applications:zen"
|
||||||
|
"applications:vesktop"
|
||||||
|
"applications:steam"
|
||||||
|
"applications:org.prismlauncher.PrismLauncher"
|
||||||
|
"applications:code"
|
||||||
|
"applications:org.kde.konsole"
|
||||||
|
"applications:org.kde.dolphin"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
}
|
||||||
|
{
|
||||||
|
digitalClock = {
|
||||||
|
calendar.firstDayOfWeek = "sunday";
|
||||||
|
time.format = "12h";
|
||||||
|
};
|
||||||
|
}
|
||||||
|
];
|
||||||
|
}];
|
||||||
|
#TODO: Convert everything below this to use higher level modules
|
||||||
|
shortcuts = {
|
||||||
|
"services/net.local.spectacle-screenshot.py-2.desktop"."_launch" =
|
||||||
|
"Shift+Print";
|
||||||
|
"services/net.local.spectacle-screenshot.py.desktop"."_launch" = "Print";
|
||||||
|
"services/org.kde.spectacle.desktop"."ActiveWindowScreenShot" = [ ];
|
||||||
|
"services/org.kde.spectacle.desktop"."FullScreenScreenShot" = [ ];
|
||||||
|
"services/org.kde.spectacle.desktop"."RecordRegion" = [ ];
|
||||||
|
"services/org.kde.spectacle.desktop"."RecordScreen" = [ ];
|
||||||
|
"services/org.kde.spectacle.desktop"."RecordWindow" = [ ];
|
||||||
|
"services/org.kde.spectacle.desktop"."RectangularRegionScreenShot" = [ ];
|
||||||
|
"services/org.kde.spectacle.desktop"."WindowUnderCursorScreenShot" = [ ];
|
||||||
|
"services/org.kde.spectacle.desktop"."_launch" = [ ];
|
||||||
|
};
|
||||||
|
configFile = {
|
||||||
|
"katerc"."KTextEditor Renderer"."Color Theme" = "Catppuccin Mocha";
|
||||||
|
"kded5rc"."Module-browserintegrationreminder"."autoload" = false;
|
||||||
|
"kded5rc"."Module-device_automounter"."autoload" = false;
|
||||||
|
"kwalletrc"."Wallet"."First Use" = false;
|
||||||
|
"kwinrc"."Desktops"."Id_1" = "f523b65c-46b8-4c91-94f4-9e247db75777";
|
||||||
|
"kwinrc"."Desktops"."Number" = 1;
|
||||||
|
"kwinrc"."Desktops"."Rows" = 1;
|
||||||
|
"kwinrc"."Plugins"."sheetEnabled" = true;
|
||||||
|
"kwinrc"."Plugins"."wobblywindowsEnabled" = true;
|
||||||
|
"kwinrc"."Plugins"."zoomEnabled" = false;
|
||||||
|
"kwinrc"."org.kde.kdecoration2"."theme" = "Breeze";
|
||||||
|
"kwinrulesrc"."700b0164-f5bb-47c9-93fc-2a4587821757"."Description" =
|
||||||
|
"Application settings for Code";
|
||||||
|
"kwinrulesrc"."700b0164-f5bb-47c9-93fc-2a4587821757"."clientmachine" =
|
||||||
|
"localhost";
|
||||||
|
"kwinrulesrc"."700b0164-f5bb-47c9-93fc-2a4587821757"."desktopfile" =
|
||||||
|
"/etc/profiles/per-user/cswimr/share/applications/code.desktop";
|
||||||
|
"kwinrulesrc"."700b0164-f5bb-47c9-93fc-2a4587821757"."desktopfilerule" =
|
||||||
|
3;
|
||||||
|
"kwinrulesrc"."700b0164-f5bb-47c9-93fc-2a4587821757"."wmclass" =
|
||||||
|
"code code-url-handler";
|
||||||
|
"kwinrulesrc"."700b0164-f5bb-47c9-93fc-2a4587821757"."wmclasscomplete" =
|
||||||
|
true;
|
||||||
|
"kwinrulesrc"."700b0164-f5bb-47c9-93fc-2a4587821757"."wmclassmatch" = 1;
|
||||||
|
"kwinrulesrc"."General"."count" = 1;
|
||||||
|
"kwinrulesrc"."General"."rules" = "700b0164-f5bb-47c9-93fc-2a4587821757";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
|
@ -20,7 +20,7 @@
|
||||||
programs.vscode = {
|
programs.vscode = {
|
||||||
enable = true;
|
enable = true;
|
||||||
package = pkgs.vscode.fhsWithPackages
|
package = pkgs.vscode.fhsWithPackages
|
||||||
(ps: with pkgs; [ dotnetCorePackages.sdk_8_0 mypy jdk21 ]);
|
(ps: with pkgs; [ dotnetCorePackages.sdk_8_0 jdk21 go ]);
|
||||||
extensions =
|
extensions =
|
||||||
with inputs.nix-vscode-extensions.extensions.${system}.vscode-marketplace;
|
with inputs.nix-vscode-extensions.extensions.${system}.vscode-marketplace;
|
||||||
with inputs.nix-vscode-extensions.extensions.${system}.vscode-marketplace-release; [
|
with inputs.nix-vscode-extensions.extensions.${system}.vscode-marketplace-release; [
|
||||||
|
@ -51,8 +51,8 @@
|
||||||
ms-python.vscode-pylance
|
ms-python.vscode-pylance
|
||||||
ms-python.debugpy
|
ms-python.debugpy
|
||||||
ms-python.black-formatter
|
ms-python.black-formatter
|
||||||
|
ms-python.mypy-type-checker
|
||||||
charliermarsh.ruff
|
charliermarsh.ruff
|
||||||
matangover.mypy
|
|
||||||
|
|
||||||
# JavaScript / TypeScript
|
# JavaScript / TypeScript
|
||||||
dbaeumer.vscode-eslint
|
dbaeumer.vscode-eslint
|
||||||
|
|
|
@ -4,7 +4,7 @@
|
||||||
(catppuccin.override {
|
(catppuccin.override {
|
||||||
variant = "mocha";
|
variant = "mocha";
|
||||||
accent ="blue";
|
accent ="blue";
|
||||||
themeList = [ "bat" "btop" "grub" "lazygit" ];
|
themeList = [ "bat" "lazygit" ];
|
||||||
})
|
})
|
||||||
catppuccin-cursors
|
catppuccin-cursors
|
||||||
|
|
||||||
|
|
|
@ -14,7 +14,20 @@
|
||||||
boot.kernelPackages = pkgs.linuxPackages_latest;
|
boot.kernelPackages = pkgs.linuxPackages_latest;
|
||||||
|
|
||||||
# Bootloader.
|
# Bootloader.
|
||||||
boot.loader.systemd-boot.enable = true;
|
boot.loader.grub = {
|
||||||
|
enable = true;
|
||||||
|
efiSupport = true;
|
||||||
|
device = "nodev";
|
||||||
|
theme = pkgs.catppuccin-grub;
|
||||||
|
extraEntries = ''
|
||||||
|
menuentry "Firmware Setup" --class menu {
|
||||||
|
fwsetup
|
||||||
|
}
|
||||||
|
'';
|
||||||
|
extraFiles = {
|
||||||
|
"theme/icons/menu.png" = "/etc/nixos/assets/img/grub/menu.png";
|
||||||
|
};
|
||||||
|
};
|
||||||
boot.loader.efi.canTouchEfiVariables = true;
|
boot.loader.efi.canTouchEfiVariables = true;
|
||||||
|
|
||||||
networking.hostName = hostname; # Define your hostname.
|
networking.hostName = hostname; # Define your hostname.
|
||||||
|
|
|
@ -48,6 +48,11 @@ let
|
||||||
starship
|
starship
|
||||||
sops
|
sops
|
||||||
ssh-to-age
|
ssh-to-age
|
||||||
|
busybox
|
||||||
|
|
||||||
|
python311
|
||||||
|
python311Packages.python-lsp-server
|
||||||
|
python311Packages.rich
|
||||||
];
|
];
|
||||||
flakePackages = with inputs; [ compose2nix.packages.${system}.default ];
|
flakePackages = with inputs; [ compose2nix.packages.${system}.default ];
|
||||||
in {
|
in {
|
||||||
|
|
|
@ -2,7 +2,8 @@
|
||||||
#TODO: Submit a PR to nixpkgs to add xonsh support to the Starship module
|
#TODO: Submit a PR to nixpkgs to add xonsh support to the Starship module
|
||||||
# After that, we can remove this import and the disabledModules line
|
# After that, we can remove this import and the disabledModules line
|
||||||
disabledModules = [ "programs/starship.nix" ];
|
disabledModules = [ "programs/starship.nix" ];
|
||||||
imports = [ /bulk/home/cswimr/Projects/nixpkgs/nixos/modules/programs/starship.nix ];
|
imports =
|
||||||
|
[ /bulk/home/cswimr/Projects/nixpkgs/nixos/modules/programs/starship.nix ];
|
||||||
|
|
||||||
# starship - a customizable prompt for any shell
|
# starship - a customizable prompt for any shell
|
||||||
programs.starship = {
|
programs.starship = {
|
||||||
|
@ -73,12 +74,16 @@
|
||||||
enable = true;
|
enable = true;
|
||||||
config = ''
|
config = ''
|
||||||
$BASH_COMPLETIONS = ('${bashcfg.completion.package}/etc/profile.d/bash_completion.sh')
|
$BASH_COMPLETIONS = ('${bashcfg.completion.package}/etc/profile.d/bash_completion.sh')
|
||||||
|
$UPDATE_OS_ENVIRON = True
|
||||||
|
$XONTRIB_CLP_ALIAS = 'shutil'
|
||||||
#xontrib load cd
|
#xontrib load cd
|
||||||
|
xontrib load clp
|
||||||
xontrib load direnv
|
xontrib load direnv
|
||||||
xontrib load sh
|
xontrib load sh
|
||||||
'';
|
'';
|
||||||
package = pkgs.xonsh.override {
|
package = pkgs.xonsh.override {
|
||||||
extraPackages = ps: [
|
extraPackages = ps: [
|
||||||
|
pkgs.python311Packages.rich
|
||||||
# (ps.buildPythonPackage rec {
|
# (ps.buildPythonPackage rec {
|
||||||
# name = "xontrib-cd";
|
# name = "xontrib-cd";
|
||||||
# version = "0.3.1";
|
# version = "0.3.1";
|
||||||
|
@ -98,6 +103,25 @@
|
||||||
# maintainers = [ "cswimr" ];
|
# maintainers = [ "cswimr" ];
|
||||||
# };
|
# };
|
||||||
# })
|
# })
|
||||||
|
(ps.buildPythonPackage rec {
|
||||||
|
name = "xontrib-clp";
|
||||||
|
version = "0.1.7";
|
||||||
|
|
||||||
|
src = pkgs.fetchFromGitHub {
|
||||||
|
owner = "anki-code";
|
||||||
|
repo = name;
|
||||||
|
rev = version;
|
||||||
|
sha256 = "1ewWlwG8KY9s6qydErurvP2x+4DIPTFcjSGP1c5y83M=";
|
||||||
|
};
|
||||||
|
|
||||||
|
meta = {
|
||||||
|
homepage = "https://github.com/anki-code/xontrib-clp";
|
||||||
|
description =
|
||||||
|
"Copy output to clipboard. Cross-platform.";
|
||||||
|
license = pkgs.lib.licenses.mit;
|
||||||
|
maintainers = [ "cswimr" ];
|
||||||
|
};
|
||||||
|
})
|
||||||
(ps.buildPythonPackage rec {
|
(ps.buildPythonPackage rec {
|
||||||
name = "xonsh-direnv";
|
name = "xonsh-direnv";
|
||||||
version = "1.6.5";
|
version = "1.6.5";
|
||||||
|
|
|
@ -8,7 +8,7 @@ import tempfile
|
||||||
from pathlib import Path
|
from pathlib import Path
|
||||||
from shutil import which
|
from shutil import which
|
||||||
|
|
||||||
from common.common import notify
|
from common.common import notify # type: ignore
|
||||||
|
|
||||||
|
|
||||||
def spectacle_screenshot(
|
def spectacle_screenshot(
|
||||||
|
@ -27,7 +27,7 @@ def spectacle_screenshot(
|
||||||
use_temp_file = True
|
use_temp_file = True
|
||||||
suffix = ".webm" if record else ".png"
|
suffix = ".webm" if record else ".png"
|
||||||
temp_file = tempfile.NamedTemporaryFile(delete=False, suffix=suffix)
|
temp_file = tempfile.NamedTemporaryFile(delete=False, suffix=suffix)
|
||||||
file_path = temp_file.name
|
file_path = Path(temp_file.name)
|
||||||
temp_file.close()
|
temp_file.close()
|
||||||
else:
|
else:
|
||||||
use_temp_file = False
|
use_temp_file = False
|
||||||
|
@ -48,7 +48,7 @@ def spectacle_screenshot(
|
||||||
command.append("--region")
|
command.append("--region")
|
||||||
|
|
||||||
try:
|
try:
|
||||||
subprocess.run(command, check=True)
|
subprocess.run(command, check=True) # type: ignore
|
||||||
except subprocess.CalledProcessError as e:
|
except subprocess.CalledProcessError as e:
|
||||||
if Path(file_path).exists() and use_temp_file:
|
if Path(file_path).exists() and use_temp_file:
|
||||||
os.remove(file_path)
|
os.remove(file_path)
|
||||||
|
@ -69,7 +69,7 @@ def spectacle_screenshot(
|
||||||
]
|
]
|
||||||
if url:
|
if url:
|
||||||
opts.extend(["--url", url])
|
opts.extend(["--url", url])
|
||||||
subprocess.run(opts)
|
subprocess.run(opts) # type: ignore
|
||||||
finally:
|
finally:
|
||||||
if Path(file_path).exists() and use_temp_file:
|
if Path(file_path).exists() and use_temp_file:
|
||||||
os.remove(file_path)
|
os.remove(file_path)
|
||||||
|
@ -78,7 +78,7 @@ def spectacle_screenshot(
|
||||||
application_name="Spectacle",
|
application_name="Spectacle",
|
||||||
title="An error occurred",
|
title="An error occurred",
|
||||||
message=str(e),
|
message=str(e),
|
||||||
urgency="critical",
|
urgency="normal",
|
||||||
category="transfer.error",
|
category="transfer.error",
|
||||||
desktop_entry="org.kde.spectacle",
|
desktop_entry="org.kde.spectacle",
|
||||||
)
|
)
|
||||||
|
|
|
@ -9,15 +9,19 @@ from shutil import which
|
||||||
from typing import Any
|
from typing import Any
|
||||||
|
|
||||||
import requests # type: ignore
|
import requests # type: ignore
|
||||||
from common.common import does_desktop_entry_exist, notify, read_secret_file
|
from common.common import ( # type: ignore
|
||||||
|
does_desktop_entry_exist,
|
||||||
|
notify,
|
||||||
|
read_secret_file,
|
||||||
|
)
|
||||||
from pyperclip import copy # type: ignore
|
from pyperclip import copy # type: ignore
|
||||||
|
|
||||||
|
|
||||||
def zipline(
|
def zipline(
|
||||||
file_path: Path,
|
file_path: Path,
|
||||||
instance_url: str,
|
instance_url: str,
|
||||||
application_name: str = None,
|
application_name: str | None = None,
|
||||||
desktop_entry: str = None,
|
desktop_entry: str | None = None,
|
||||||
) -> Any:
|
) -> Any:
|
||||||
token = read_secret_file("zipline")
|
token = read_secret_file("zipline")
|
||||||
|
|
||||||
|
@ -72,7 +76,7 @@ def zipline(
|
||||||
application_name=application_name,
|
application_name=application_name,
|
||||||
title="Upload Failed",
|
title="Upload Failed",
|
||||||
message=f"An error occurred: {e}",
|
message=f"An error occurred: {e}",
|
||||||
urgency="critical",
|
urgency="normal",
|
||||||
category="transfer.error",
|
category="transfer.error",
|
||||||
icon=file_path,
|
icon=file_path,
|
||||||
)
|
)
|
||||||
|
|
Loading…
Reference in a new issue